как распарсить этот JSON

265
19 марта 2017, 04:01
{
    "status": "OK",
    "data": [{
        "id": "6",
        "title": "something",
        "body": "something",
        "created": 1467451711,
        "author": {
            "name": "something",
            "logo": "something.png"
        },
        "images": [{
            "src": "something.jpg",
            "created": "2016-07-02 09:28:31"
        }],
        "likes": 9,
        "width": 100
    }, {
        "id": "5",
        "title": "something",
        "body": "something",
        "created": 1467226414,
        "author": {
            "name": "something",
            "logo": "something.png"
        },
        "images": [{
            "src": "something.jpg",
            "created": "2016-06-29 18:53:34"
        }, {
            "src": "something.jpg",
            "created": "2016-06-29 18:53:35"
        }, {
            "src": "something.jpg",
            "created": "2016-06-29 18:53:35"
        }],
        "likes": 12,
        "width": 33
    }, {
        "id": "2",
        "title": "something",
        "body": "something",
        "created": 1467180754,
        "author": {
            "name": "something",
            "logo": "something.png"
        },
        "likes": 13,
        "width": 0
    }]
}

помогите это распарсить пожалуйста вроде все правильно делаю

for (int i = 0; i < data_obj.length(); i++) {
                            JSONObject c = data_obj.getJSONObject(i);
                            JSONObject b=c.getJSONObject("author");
                            name1 = b.getString("name");
                            logo1 = b.getString("logo");
                            id = c.getString("id");
                            title = c.getString("title");
                            body = c.getString("body");
                            created = c.getString("created");
                            likes = c.getString("likes");
                            width = c.getString("width");
                        }
Answer 1

Это ленивыми делается так:

  1. Берём либу Gson
  2. Пользуем сайт типа этого для преобразования JSON в Java классы.
  3. Парсим JSON в Java классы либой из п.1 примерно так:
String jsonString = ...;
Example result = new Gson.Builder().build().fromJson(jsonString, Example.class);

В итоге вся инфа у вас будет в переменной result и к ней легко и просто обращаться.

Полученные с сайта классы

-----------------------------------com.example.Author.java-----------------------------------

package com.example;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Author {
@SerializedName("name")
@Expose
public String name;
@SerializedName("logo")
@Expose
public String logo;
}
-----------------------------------com.example.Datum.java-----------------------------------
package com.example;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Datum {
@SerializedName("id")
@Expose
public String id;
@SerializedName("title")
@Expose
public String title;
@SerializedName("body")
@Expose
public String body;
@SerializedName("created")
@Expose
public int created;
@SerializedName("author")
@Expose
public Author author;
@SerializedName("images")
@Expose
public List<Image> images = null;
@SerializedName("likes")
@Expose
public int likes;
@SerializedName("width")
@Expose
public int width;
}
-----------------------------------com.example.Example.java-----------------------------------
package com.example;
import java.util.List;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Example {
@SerializedName("status")
@Expose
public String status;
@SerializedName("data")
@Expose
public List<Datum> data = null;
}
-----------------------------------com.example.Image.java-----------------------------------
package com.example;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class Image {
@SerializedName("src")
@Expose
public String src;
@SerializedName("created")
@Expose
public String created;
}
READ ALSO
Загрузка файла на сервер в фоновом режиме с возможность дозагрузки

Загрузка файла на сервер в фоновом режиме с возможность дозагрузки

Привет, подскажите как можно осуществить загрузку файла в фоновом режиме, то есть пользователь может выбрать файлы нажать загрузить и переходить...

294
Api for ARPSpoofing Java

Api for ARPSpoofing Java

What API you can advise to write the utility for ARP spoofing for Java, tried Jpcap, but for some reason in the Reprositorium a truncated version that does not coincide with most implementations

242
Закрытие потока в JAVA

Закрытие потока в JAVA

Есть GUI, при нажатии на кнопку запускается окно в отдельном потоке работающем в бесконечном цикле, после закрытия окна стоит ли удалять или...

260
Java. Hibernate. Criteria. Union

Java. Hibernate. Criteria. Union

Есть метод, который возвращает список с историей сообщений

216