REST 查询字符串参数
REST Query String Parameter
我从客户端发送了以下查询字符串参数
{"take":75,"skip":0,"page":1,"pageSize":75,"filter":{"logic":"and","filters":
[{"field":"prodCode","operator":"eq","value":"Z20"}]}}:
在 REST 服务器中,我如何接收上述格式并正确分配给每个类别?
更新 1
MultivaluedMap params = uriInfo.getQueryParameters();
参数的值为
{_=[1437904506062], {"take":75,"skip":0,"page":1,"pageSize":75,"filter":{"logic":"and","filters":[{"field":"prodCode","operator":"eq","value":"Z30"}]}}=[]}
这是一个查询参数,因此您必须使用值为 {"take":75,"skip":0,"page":1,"pageSize":75,"filter":{"logic":"and","filters":
[{"field":"prodCode","operator":"eq","value":"Z20"}]}}:
的 key
获取它。所以使用 key
,将上面的内容存储在 String
中,然后解析为 JSON
(我在这里使用 org.json
)。您将能够根据需要提取任何 key
/value
。您可以使用代码片段:-
String inputValue = @QueryParam(YOUR_KEY); // OR whatever way you get it
/*
* This inputValue will actually contain your value :-
* {"take":75,"skip":0,"page":1,
* "pageSize":75,"filter":{"logic":"and","filters":
* [{"field":"prodCode","operator":"eq","value":"Z20"}]}}
*/
JSONObject inputJSON = new JSONObject(inputValue);
//Now getting values from input JSON
int take = inputJSON.getInt("take");
int skip = inputJSON.getInt("skip");
int page = inputJSON.getInt("page");
int pageSize = inputJSON.getInt("pageSize");
JSONObject filter = inputJSON.getJSONObject("filter"); // filter is again a JSONObject
String logic = filter.getString("logic");
System.out.println(take + " "+skip + " "+page + " "+pageSize + " "+logic);
JSONArray filters = filter.getJSONArray("filters"); // filters is a JSONArray
for(int i = 0; i< filters.length(); i++){ // iterating over JSONArray
JSONObject jo = (JSONObject)filters.get(i);
String field = jo.getString("field");
String operator = jo.getString("operator");
String value = jo.getString("value");
System.out.println(field + " "+operator + " "+value );
}
输出:-
75 0 1 75 and
prodCode eq Z20
我从客户端发送了以下查询字符串参数
{"take":75,"skip":0,"page":1,"pageSize":75,"filter":{"logic":"and","filters":
[{"field":"prodCode","operator":"eq","value":"Z20"}]}}:
在 REST 服务器中,我如何接收上述格式并正确分配给每个类别?
更新 1
MultivaluedMap params = uriInfo.getQueryParameters();
参数的值为
{_=[1437904506062], {"take":75,"skip":0,"page":1,"pageSize":75,"filter":{"logic":"and","filters":[{"field":"prodCode","operator":"eq","value":"Z30"}]}}=[]}
这是一个查询参数,因此您必须使用值为 {"take":75,"skip":0,"page":1,"pageSize":75,"filter":{"logic":"and","filters":
[{"field":"prodCode","operator":"eq","value":"Z20"}]}}:
的 key
获取它。所以使用 key
,将上面的内容存储在 String
中,然后解析为 JSON
(我在这里使用 org.json
)。您将能够根据需要提取任何 key
/value
。您可以使用代码片段:-
String inputValue = @QueryParam(YOUR_KEY); // OR whatever way you get it
/*
* This inputValue will actually contain your value :-
* {"take":75,"skip":0,"page":1,
* "pageSize":75,"filter":{"logic":"and","filters":
* [{"field":"prodCode","operator":"eq","value":"Z20"}]}}
*/
JSONObject inputJSON = new JSONObject(inputValue);
//Now getting values from input JSON
int take = inputJSON.getInt("take");
int skip = inputJSON.getInt("skip");
int page = inputJSON.getInt("page");
int pageSize = inputJSON.getInt("pageSize");
JSONObject filter = inputJSON.getJSONObject("filter"); // filter is again a JSONObject
String logic = filter.getString("logic");
System.out.println(take + " "+skip + " "+page + " "+pageSize + " "+logic);
JSONArray filters = filter.getJSONArray("filters"); // filters is a JSONArray
for(int i = 0; i< filters.length(); i++){ // iterating over JSONArray
JSONObject jo = (JSONObject)filters.get(i);
String field = jo.getString("field");
String operator = jo.getString("operator");
String value = jo.getString("value");
System.out.println(field + " "+operator + " "+value );
}
输出:-
75 0 1 75 and
prodCode eq Z20