Как получить значения из ключей во вложенных объектах, используя только json-simple - PullRequest
0 голосов
/ 03 июня 2019

Я хочу получить только определенное значение из всех вложенных объектов.В приложении мне просто нужно сообщение msg 3, которое находится внутри сообщений другого объекта.

Я пробовал использовать JSONObject, но он не работает для вложенного объекта.Однако он работает только с одним объектом, означает корневой объект.

INPUT - {"name":"lola","messages":{"msg 1":"msg 2","msg 3":"msg 4"},"age":22}

        String s = sc.nextLine();
        JSONParser parser = new JSONParser(); 
        JSONObject json = (JSONObject) parser.parse(s);
        System.out.println(json);
        Object name = json.get("messages");
        System.out.println(name);

        JSONObject messageObject = (JSONObject) json.get("messages");
        System.out.println(employeeObject);
        //Get employee first name
        String msg= (String) messageObject.get("msg3");   
        System.out.println(msg);

Выходные данные:

{"msg 3":"msg 4","msg 1":"msg 2"}
{"msg 3":"msg 4","msg 1":"msg 2"}
null

Последний вложенный объект не извлекаетсяв любом случае.Другое дело, что обычная печать строки в виде JSONObject изменяется.как MSG3 пришел раньше, чем MSG1.Вместо нуля - там должно быть msg4.

Заранее спасибо.

1 Ответ

0 голосов
/ 03 июня 2019

Вам не хватает пробела между "msg" и "3".Кстати - вы можете сделать это проще, как таковой.

String s = sc.nextLine();
JSONParser parser = new JSONParser(); 
JSONObject json = (JSONObject) parser.parse(s);
System.out.println(json);
System.out.println(json.get("message").get("msg 3"));
...