0

I want to get only a specific value out of all the nested objects. In the application I just need the msg 3 which is inside another object messages.

I have tried it using JSONObject but it is not working for nested object. However It is working with just a single object means root object .

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);

The Output:

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

The last nested object is not fetching in any way. Another thing is that the normal print of the string as a JSONObject gets changed. like the msg3 came before msg1. In place of null - msg4 should be there.

Thanks in advance.

SAM SAMULE
  • 35
  • 1
  • 4

1 Answers1

0

You are missing a space between "msg" and "3". By the way - you can do this easier, as such.

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"));
Christian B
  • 102
  • 3