#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 и из них.