Есть вот такой 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<org.size(); i++){System.out.println("The " + i + " element of the array: "+org.get(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<String, Object> entry : currencies.entrySet()) {
String currency = entry.getKey();
JSONObject currencyInfo = (JSONObject) entry.getValue();
// ...
}
Но вообще лучше использовать не simple-json, а что-нибудь другое, например gson.
Вы зачем-то усложняете:
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: [{{
в примере строчки, что я привел чуть выше. Видимо, вы что-то не так скопировали.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
В погодном приложении выдает ошибку NullPointerException на строчке: mWeatherLayoutsetVisibility(View
Есть какой-то быстрый алгоритм нахождения суммы всех чисел двумерного массива на java? Кроме этого ничего не нашел толкомЯ так понимаю, что...
Пытаюсь получить и изменить xml элемент Активити, находясь внутри Фрагмента
Пишу приложение, которое должно выдавать информацию о мероприятиях проходящих в том или ином городеЯ столкнулся с проблемой - где брать данные...