#java #json
Есть вот такой JSON: { "sourceId": "currency-cash", "date": "2017-09-07T15:56:32+03:00", "organizations": [{ { "orgType": 1, "address": "ул. Автозаводская, 54\/19", "regionId": "0,7oiylpmiow8iy1smadi", "phone": "123", "link": "http:\/\/organizations\/ru\/info\/currency\/-\/7oiylpmiow8iy1smb0b\/cash", "id": "7oiylpmiow8iy1smb0b", "cityId": "7oiylpmiow8iy1smadi", "oldId": 1266, "title": "Bank", "branch": false, "currencies": { "EUR": { "ask": "31.6500", "bid": "30.9000" }, "USD": { "ask": "26.4500", "bid": "26.0500" } } } А точнее это часть из файла. Как получить доступ, перебрать и вывести "currencies"? На данный момент вывожу всё, но как добраться до "currencies" не пойму. JSONParser parser = new JSONParser(); JSONObject jsonObject = (JSONObject) parser.parse(new FileReader("cur.json")); String objName = (String) jsonObject.get("sourceId"); System.out.println("Title: "+objName); JSONArray org= (JSONArray) jsonObject.get("organizations"); // for(int i=0; iОтветы
Ответ 1
Если всё-таки интересует решение для simple-json, то можно вспомнить, что JSONObject является наследником HashMap, соответственно можно воспользоваться методом HashMap::entrySet: JSONObject currencies = (JSONObject) innerObj.get("currencies") for (Map.Entryentry : currencies.entrySet()) { String currency = entry.getKey(); JSONObject currencyInfo = (JSONObject) entry.getValue(); // ... } Но вообще лучше использовать не simple-json, а что-нибудь другое, например gson. Ответ 2
Вы зачем-то усложняете: String sourceString = ""; // весь json считываем в строку JSONObject full = new JSONObject(sourceString); String sourceId = full.getString("sourceId"); JSONArray organizations = full.getJSONArray("organizations"); И далее по аналогии. Я привел пример использования библиотеки org.json. В другом ответе (Пожалуйста, помогите распарсить JSON) я также показывал, как можно парсить json и другими библиотеками. По поводу конкретно вашего json - в этом моменте: "organizations": [{ { Не совсем понятно, что содержится. Элементы либо содержатся в jsonarray под индексами: {"response":["item1",1,false]} Либо в jsonobject под ключами: {"response":{"key":"value"}} У вас же jsonobject, видимо, каким-то образом находится прямо внутри jsonobject: [{{ в примере строчки, что я привел чуть выше. Видимо, вы что-то не так скопировали.
Комментариев нет:
Отправить комментарий