7

我想知道如何按项目解析 JSON 提要(例如,每个项目的 url / 标题 / 描述)。我看过 doc / 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

4 回答 4

9

取决于实际的 JSON 格式。实际上,您可以创建一个与 JSON 格式匹配的自定义 Javabean 类。JSON 中的任何字段都可以映射为StringIntegerBoolean等 Javabean 属性。任何数组都可以映射为List属性。任何对象都可以映射为另一个嵌套的 Javabean 属性。它极大地简化了 Java 中的进一步处理。

如果没有您身边的 JSON 字符串示例,它只是在猜测它的外观,所以我不能在这里给出一个基本示例。但是我之前在这里发布过类似的答案,您可能会发现它很有用:

Gson 还有一个用户指南,您可能会发现它也很有用。

于 2010-01-09T19:38:44.267 回答
3

Gson 1.4 有一个新的 API JsonStreamParser,它可以让你从一个流中一个一个地解析多个 JSON 对象。

于 2010-04-03T05:28:50.827 回答
1

您可以为 json 对象创建相应的 java 类。整数、字符串值可以按原样映射。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

于 2013-02-11T18:51:15.833 回答
0

我不知道 GSON 是否可以进行流式/增量绑定(我认为它没有)。

但是有特定的理由只考虑那个特定的图书馆吗?其他 Java JSON 处理库确实允许这样的处理(您可以查看其他答案的链接以获得一些想法),因为它在处理大型提要时非常重要。

于 2010-01-10T23:20:33.613 回答