Страницы

Поиск по вопросам

четверг, 4 апреля 2019 г.

Не получается распарсить 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 Iterator i = org.iterator(); while (i.hasNext()) { JSONObject innerObj = (JSONObject) i.next(); System.out.println("Банк: "+ innerObj.get("title") + " Адрес: " + innerObj.get("address"));
}
Используется json-simple.


Ответ

Если всё-таки интересует решение для simple-json, то можно вспомнить, что JSONObject является наследником HashMap, соответственно можно воспользоваться методом HashMap::entrySet
JSONObject currencies = (JSONObject) innerObj.get("currencies") for (Map.Entry entry : currencies.entrySet()) { String currency = entry.getKey(); JSONObject currencyInfo = (JSONObject) entry.getValue(); // ... }
Но вообще лучше использовать не simple-json, а что-нибудь другое, например gson

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

Отправить комментарий