2015-07-26 3 views
1

У меня есть следующие параметры строки запроса, посланные от клиентаREST Строка запроса Параметр

{"take":75,"skip":0,"page":1,"pageSize":75,"filter":{"logic":"and","filters": 
[{"field":"prodCode","operator":"eq","value":"Z20"}]}}: 

В REST сервере, как я мог бы получить вышеуказанную форму и правильно назначить каждую категорию?

Обновление 1

MultivaluedMap params = uriInfo.getQueryParameters(); 

Значение Params является

{_ = [1437904506062], { "принимать": 75, "пропустить": 0, "страница" : 1, "PAGESIZE": 75, "фильтр": { "логика": "и", "фильтры": [{ "поле": "prodCode", "оператор": "э", "значение": "Z30 "}]}} = []}

+1

это является параметром запроса, так что вы должны получить его с помощью ключа. Таким образом, используя этот ключ, сохраните выше в 'String', а затем проанализируйте как' JSON'. Вы сможете извлечь любой ключ/значение, как хотите. Извиняюсь, если я неправильно понял вопрос. –

+0

@AnkitNigam Итак, вы хотите сказать с клиентской стороны разбор данных и отправки на сервер? Не могли бы вы предоставить образец фрагмента кода? – user75ponic

+0

Нет, я имел в виду, что клиент будет отправлять данные, как в обычном тексте. Вы можете сохранить его в 'String', а затем разобрать на стороне сервера' JSON'. Это то, что вы хотите, я могу предоставить фрагмент, если вы хотите выше? –

ответ

2

Это параметр запроса, поэтому вы должны получить его с помощью key, имеющего значение {"take":75,"skip":0,"page":1,"pageSize":75,"filter":{"logic":"and","filters": [{"field":"prodCode","operator":"eq","value":"Z20"}]}}:. Таким образом, используя это 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 
+0

@ user75ponic попробуйте распечатать 'inputJSON' и посмотреть, что он содержит, используя' System.out.println (inputJSON'); ', также напечатать' inputValue' –

+0

Это должно быть что-то вроде '{" pageSize ": 75, "принимают": 75, "фильтр": { "фильтры": [{ "значение": "Z20", "оператор": "э", "поле": "prodCode"}], "логику":» и "}," страница ": 1," пропустить ": 0}'. Можете ли вы попробовать напечатать 'inputValue' вместо –

+0

@ user75ponic, как вы принимаете параметр запроса, имеет некоторое несоответствие, я предоставил решение, рассматривая String, предоставленную вами в OP –

Смежные вопросы