Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用googlegson解析Json提要_Java_Json_Parsing_Gson - Fatal编程技术网

Java 使用googlegson解析Json提要

Java 使用googlegson解析Json提要,java,json,parsing,gson,Java,Json,Parsing,Gson,我想知道如何按项目解析JSON提要(例如,每个项目的url/title/description)。我已经查看了doc/api,但是它对我没有帮助 这就是我目前得到的 import com.google.gson.Gson; import com.google.gson.JsonObject; public class ImportSources extends Job { public void doJob() throws IOException { String j

我想知道如何按项目解析JSON提要(例如,每个项目的url/title/description)。我已经查看了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();
    }
}   

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

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


Gson也有一个,你可能会发现它也很有用。

我不知道Gson是否可以做流式/增量绑定(我认为它没有)


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

Gson 1.4有一个新的API JsonStreamParser,允许您从流中逐个解析多个JSON对象。

您可以为JSON对象创建相应的java类。整数、字符串值可以按原样映射。Json可以这样解析-

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

下面是一个例子-

我使用ROME作为RSS源,我使用的框架包含gson,这就是为什么我尝试使用它,但我对任何其他库开放。好的。正如我所说,我认为GSON只做完整的文档绑定,但我不是100%。另一种选择是,Jackson()允许增量绑定以及多种其他操作模式。其工作方式是,您需要为main获取一个JsonParser,迭代main JSON数组或对象,并调用parser.readValueAs()进行实际绑定。如果文档没有足够的指针,用户邮件列表可以帮助您了解详细信息。感谢您的回答,我已尝试将示例应用于以下提要:。我没有得到除null以外的任何其他值。我是否需要创建两个组:流和推特?