Я только начинаю использовать json с java. Я не уверен, как получить доступ к строковым значениям в JSONArray. Например, мой json выглядит так:
{
"locations": {
"record": [
{
"id": 8817,
"loc": "NEW YORK CITY"
},
{
"id": 2873,
"loc": "UNITED STATES"
},
{
"id": 1501
"loc": "NEW YORK STATE"
}
]
}
}
мой код:
JSONObject req = new JSONObject(join(loadStrings(data.json),""));
JSONObject locs = req.getJSONObject("locations");
JSONArray recs = locs.getJSONArray("record");
На данный момент у меня есть доступ к «записи» JSONArray, но я не уверен, как мне получить значения «id» и «loc» в цикле for. Извините, если это описание не слишком понятно, я немного новичок в программировании.
Ответы:
Вы пробовали использовать JSONArray.getJSONObject (int) и JSONArray.length () для создания цикла for:
источник
id
синтаксис,getInt
например, как получить значение хэш-карты, указав ключ, то зачем нам выполнять итерацию с помощью цикла for? Разве итерация с циклом не приводит кid
назначению getint id
несколько раз?Org.json.JSONArray не итерацию.
Вот как я обрабатываю элементы в net.sf.json.JSONArray :
Прекрасно работает... :)
источник
JSONArray
не повторяется.Java 8 появилась на рынке почти через два десятилетия, ниже приведен способ итерации
org.json.JSONArray
с Java8 Stream API.Если итерация только один раз (нет необходимости
.collect
)источник
.mapToObj
показывает «необработанное исключение: JSONException».mapToObj(index -> (JSONObject) array.get(index))
ошибки,jsonArray.get(index)
которые потенциально могут быть выброшены,JSONException
ноJSONException extends RuntimeException
поэтому все должно быть нормально, по крайней мере, во время компиляцииГлядя на ваш код, я чувствую, что вы используете JSONLIB. Если это так, посмотрите следующий фрагмент, чтобы преобразовать массив json в массив java.
источник
Если это поможет кому-то другому, я смог преобразовать его в массив, выполнив что-то вроде этого:
... или вы сможете получить длину
источник
org.json.JSONObject
имеетtoJSONArray(JSONArray names)
метод иorg.json.JSONArray
имеетtoJSONObject(JSONArray names)
метод , но он не имеетtoArray()
метода.HashMap regs = (HashMap) parser.parse (stringjson);
(Строка) (( HashMap ) regs.get ("firstlevelkey")). Get ("secondlevelkey");
источник