如何仅使用 json-simple 从嵌套对象中的键获取值
How to get the values from keys in nested objects using only json-simple
我只想从所有嵌套对象中获取特定值。在应用程序中,我只需要另一个对象消息中的消息 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 之前出现一样。
代替 null - msg4 应该在那里。
提前致谢。
您在 "msg" 和“3”之间缺少一个 space。顺便说一句 - 你可以更轻松地做到这一点。
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"));
我只想从所有嵌套对象中获取特定值。在应用程序中,我只需要另一个对象消息中的消息 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 之前出现一样。 代替 null - msg4 应该在那里。
提前致谢。
您在 "msg" 和“3”之间缺少一个 space。顺便说一句 - 你可以更轻松地做到这一点。
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"));