доступ к значению в объекте JSON

#java #android #json

#java #Android #json

Вопрос:

У меня есть объект Json, который содержит следующие данные

{«data»:{«pdp0:»:{«recv»:{«packets»:»15104″,»bytes»:»9059817″},»sent»:{«packets»:»9480″,»bytes»:»1687801″}},»gre0:»:{«recv»:{«packets»:»0″,»bytes»:»0″},»sent»:{«packets»:»0″,»bytes»:»0″}},»tunl0:»:{«recv»:{«packets»:»0″,»bytes»:»0″},»sent»:{«packets»:»0″,»bytes»:»0″}},»usb0:»:{«recv»:{«packets»:»0″,»bytes»:»0″},»sent»:{«packets»:»0″,»bytes»:»0″}},»lo:»:{«recv»:{«packets»:»48300″,»bytes»:»2616703″},»sent»:{«packets»:»48300″,»bytes»:»2616703″}}},»ver»:»1.4″,»type»:»netdev»,»date»:»2011-4-13 14:10:21″,» пользователь»:»351863047772880″,» time_stamp»:1305313821541}

Если я хочу получить доступ к данным в data-> pdp0-> recv-> packets (здесь значение равно 15104), какую функцию мне следует использовать?

спасибо sarath

Ответ №1:

Вы можете использовать простой старый пакет org.json для получения вложенных объектов:

 int packets = new JSONObject(str) // str is your JSON string as above
                 .getJSONObject("data")
                 .getJSONObject("pdp0")
                 .getJSONObject("recv")
                 .getInt("packets");
  

Подробности API здесь:http://www.json.org/javadoc/org/json/JSONObject.html

Комментарии:

1. Привет, когда я использую код, я получаю сообщение об ошибке, что str должен иметь тип Map, но я объявил str как JSONObject

2. str предполагалось, что это будет то, String о чем вы упомянули выше. Если это уже JSONObject , то переходите непосредственно к выполнению str.getJSONObject("data");

Ответ №2:

Вы можете использовать то, что предложил Aleadam. Однако вам было бы лучше использовать GSON для объектов Java, потому что это позволяет вам сериализовать и десериализовать ваш JSON для ваших объектов Java и из них.