Разбор Json Feeds с помощью Google Gson - PullRequest
7 голосов
/ 09 января 2010

Я хотел бы знать, как анализировать канал JSON по элементам (например, url / title / description для каждого элемента). Я посмотрел на документ / API, но это не помогло мне.

Это то, что я получил до сих пор

import com.google.gson.Gson;
import com.google.gson.JsonObject;

public class ImportSources extends Job {
    public void doJob() throws IOException {
        String json = stringOfUrl("http://feed.test/all.json");
        JsonObject jobj = new Gson().fromJson(json, JsonObject.class);
        Logger.info(jobj.get("responseData").toString());
    }
    public static String stringOfUrl(String addr) throws IOException {
        ByteArrayOutputStream output = new ByteArrayOutputStream();
        URL url = new URL(addr);
        IOUtils.copy(url.openStream(), output);
        return output.toString();
    }
}   

Ответы [ 4 ]

9 голосов
/ 09 января 2010

Зависит от фактического формата JSON. Фактически вы можете просто создать собственный класс Javabean, который соответствует формату JSON. Любые поля в JSON могут быть сопоставлены как свойства Javabean String, Integer, Boolean и т. Д. Любые массивы могут быть отображены как List свойства. Любые объекты могут быть отображены как другое вложенное свойство Javabean. Это значительно облегчает дальнейшую обработку в Java.

Без примера строки JSON с вашей стороны остается только гадать, как он будет выглядеть, поэтому я не могу привести здесь базовый пример. Но я уже писал подобные ответы здесь, вы можете найти это полезным:

Gson также имеет Руководство пользователя , вы также можете найти его полезным.

3 голосов
/ 03 апреля 2010

Gson 1.4 имеет новый API JsonStreamParser, который позволяет вам анализировать несколько объектов JSON один за другим из потока.

1 голос
/ 11 февраля 2013

Вы можете создать соответствующие классы java для объектов json. Целочисленные, строковые значения могут отображаться как есть. Json можно разобрать вот так-

 Gson gson = new GsonBuilder().create();
 Response r = gson.fromJson(jsonString, Response.class);

Вот пример - http://rowsandcolumns.blogspot.com/2013/02/url-encode-http-get-solr-request-and.html

0 голосов
/ 11 января 2010

Я не знаю, может ли GSON выполнять потоковую / инкрементную привязку (я думал, что это не так).

Но есть ли конкретная причина рассматривать только эту конкретную библиотеку?Другие библиотеки обработки Java JSON допускают такую ​​обработку (вы можете проверить ссылки, которые есть в другом ответе на некоторые идеи), поскольку это довольно важная функция при обработке больших каналов.

...