Страницы

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

воскресенье, 2 февраля 2020 г.

Не получается распарсить JSON

#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.Entry entry : 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: [{{ в примере строчки, что я привел чуть выше. Видимо, вы что-то не так скопировали.

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

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