解析与谷歌Gson的Json饲料
我想知道如何解析一个JSON饲料的项目(如每个项目的URL /标题/描述)。我看过doc/api,但它没有帮助我。解析与谷歌Gson的Json饲料
这是我走到这一步,
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也有User Guide,你会发现它也是有用的。
我不知道GSON是否可以做流/增量绑定(我认为它没有)。
但是,是否有特定的理由只考虑特定的图书馆?其他Java JSON处理库允许进行这样的处理(您可以检查其他答案对于某些想法的链接),因为它在处理大型提要时非常重要。
那么我使用ROME的RSS提要,我使用的框架包含gson,这就是为什么我试图使用它,但我打开任何其他库。 – Roch 2010-01-11 11:04:18
好的。就像我说的,我认为GSON只做全文档绑定,但我不是100%。 作为替代方案,Jackson(http://jackson.codehaus.org)确实允许增量绑定以及多种其他操作模式。 工作方式是,您需要为主要事物获取JsonParser,遍历主JSON数组或对象,然后调用parser.readValueAs()以进行实际绑定。 如果文档没有足够的指针,用户邮件列表可以帮助您了解详细信息。 – StaxMan 2010-01-12 05:25:27
Gson 1.4有一个新的API JsonStreamParser,它允许您从一个流中逐个解析多个JSON对象。
您可以为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
谢谢您的回答,我试图例子适用于下列饲料:http://www.stocktwits.com/ streams/all.json。我没有设法得到除null以外的任何其他值。我是否需要创建两个组:流和推文? – Roch 2010-01-11 11:10:53