2015-04-10 18 views
-2

Я пытаюсь проверить эту строку ниже. Фактически я получаю эту строку в своем сервлете, теперь мне нужно проверить эти значения на бэкэнд. Каков правильный способ сделать это. Должен ли я сначала преобразовать его в JSON Object, а затем в HashMap? Пожалуйста, предложите правильный/подходящий подход, который будет использоваться здесь. Я совершенно новичок в Java и JSON.Преобразование строки в объект JSON и проверка

Строка

"{"if_ack":4},{"if_cmd":1,"if_state":1},{"if_cmd":1,"if_state":5}" 
+0

Строка - "{" if_ack ": 4}, {" if_cmd ": 1," if_state ": 1}, {" if_cmd ": 1," if_state ": 5}" – user3712016

+0

Сначала вы можете редактировать свои post, поэтому строка будет отображаться в вопросе. Во-вторых, я предполагаю, что нет правильного формата JSON из-за отсутствия скобок. Поэтому ничто не может автоматически преобразовать эту строку. Возможное решение состоит в том, чтобы окружить его '' '' и '' ', поэтому он становится' JSONArray' или '{" root ": }' like 'JSONObject' – ceekay

+0

thanks @ceekay, я стараюсь, как вы предложил !! – user3712016

ответ

0

Я использую GSON для обработки JSON на сервере. Например:

InputStream is (send by client, JSON format) 
Reader reader = new InputStreamReader(is); 
Gson gson = new Gson(); 
List<YourClass> items = gson.fromJson(reader, new TypeToken<List<YourClass>>() 

YourClass должны иметь такие атрибуты, как if_ack, if_state, if_cmd, ...

Затем вы используете так просто, как это:

for (YourClass item : items) { 
    //do whatever you want 
} 

EDIT: ваша строка должна быть в (JSON-массив): [{"if_ack": 4}, {"if_cmd": 1, "if_state": 1}, {"if_cmd": 1, "if_state": 5}]

ПРИМЕР: У вас JSON вот так: [{"id": "1", "image": "test1"}, {"id": "2", "image": "test2"}]

YourClass.java должно быть:

public class YourClass{ 
    private int id; 
    private String image; 
    //+ constructor, getters, setters,... 
} 

На сервере вы можете получить JSON со стороны клиента по InputStream является:

Reader reader = new InputStreamReader(is, "UTF-8"); 
Gson gson = new Gson(); 
List<YourClass> items = gson.fromJson(reader, new TypeToken<List<YourClass>>(); 

, а затем:

for (YourClass item: items){ 
    //acces to item properties like item.id, item.image 
} 
+0

Спасибо, бутон, попробовав! – user3712016

+0

привет, я преобразовал формат в JSONArray, как это было предложено с помощью []. Я могу получить доступ к id для каждого объекта java, но все же не знаю, как validatae. Ваш подход не очень ясен. Я новая пчела в java и json, будет здорово, если вы объясните, как вы проверяете, извините за мелкие вопросы, я пытаюсь учиться:) Спасибо! – user3712016

+0

Я добавил пример моего ответа. Я не знаю точно, что вы имеете в виду, как проверять, я надеюсь, что вы сейчас разобрались. – user4341206

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