从Java中的JSON响应中提取数据?

时间:2012-10-05 18:36:50

标签: java json jackson

这个问题来自我自己的问题,

Getting JSON response into String in Java?

好吧,我确实得到了预期的结果。现在,如果我想提取JSON响应的特定部分并使用它来说,将它保存在数据库中,我该怎么做?

我正在考虑使用Jackson JSON解析器。我查看了教程,但它只使用了一个文件而不是HTTP请求。

7 个答案:

答案 0 :(得分:2)

杰克逊是一个很好的选择。我不知道你从教程中收集到了什么;你可能需要阅读超越它们。 Jackson是一个很好的Java库来操作JSON。

答案 1 :(得分:0)

Gson是一个优秀的json解析器。您可以使用它来转换json to Java objects

Gson gson = new Gson();
Foo foo = gson.fromJson("{your json string}", Foo.class);

如果你不确定Foo类应该是什么样子,你总是可以创建Foo,就像你认为它应该看起来一样,并序列化它以与你的json字符串进行比较。

Gson gson = new Gson();
gson.toJson(new Foo());

答案 2 :(得分:0)

我相信this正是您所寻找的。注释中注明// or URL, Stream, Reader, String, byte[]表示可以使用任何形式的输入流。只需从您正在使用的HTTP连接获取输入流并解析即可。\

实际上,您可能已经阅读过的教程(使用对象映射)可以完成同样的事情。读取JSON流的方法,无论是String,InputStream还是其他,都会被重载以获取多个输入并将它们映射到相应的对象。

答案 3 :(得分:0)

您可以传递字节而不是文件。 查看杰克逊API

你能从请求中获取参数并将它们转换成字节数组吗?

String source = "" +request.getParameter("param1");
byte[] byteArray = source.getBytes("UTF-8");

答案 4 :(得分:0)

假设JSON是一个简单的普通对象,可以用字符串读取。只需将输入流转换为正确的图表集中的普通字符串,然后您就可以使用杰克逊映射器解析该字符串。

getMapper()。readValue(dataStr,Class.class);

答案 5 :(得分:0)

我认为你的整个回应都是json而不仅仅是其中的一部分。

您可以尝试Genson http://code.google.com/p/genson/。它拥有大多数杰克逊功能以及其他非常有用的功能,Genson也更容易使用,并试图比杰克逊更加开放。 这是一个解决方案,您将使用Genson的数据绑定功能将您的流反序列化为java对象,然后您将使用您的对象并执行您想要的任何操作。

InputStream instream = entity.getContent();
Genson genson = new Genson();
ObjectReader reader = genson.createReader(instream);
DeserializeIntoThisClass myObject = genson.deserialize(DeserializeIntoThisClass.class, reader, new Context(genson));
// and now you can work with this object and store it in a database if you want

答案 6 :(得分:0)

您可以传递URL代替File,您可以从Javadocs找到,所以:

MyObject ob = new ObjectMapper().readValue(url, MyObject.class);