-1

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

将 JSON 响应转换为 Java 中的字符串?

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

我正在考虑使用杰克逊 JSON 解析器。我检查了教程,但它只使用文件而不是 HTTP 请求。

4

7 回答 7

2

杰克逊是个不错的选择。我不知道您从教程中收集到了什么;您可能需要阅读它们之外的内容。Jackson 是一个很好的处理 JSON 的 Java 库。

于 2012-10-05T18:39:46.350 回答
0

Gson是一个优秀的 json 解析器。您可以使用它将 json 转换为 Java 对象

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

如果您不确定Foo该类应该是什么样子,您始终可以Foo按照您认为的外观创建并序列化它以与您的 json 字符串进行比较。

Gson gson = new Gson();
gson.toJson(new Foo());
于 2012-10-05T18:41:31.713 回答
0

我相信就是你要找的。请注意,注释中的// or URL, Stream, Reader, String, byte[]意思是可以使用任何形式的输入流。只需从您正在使用的 HTTP 连接获取输入流并解析即可。\

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

于 2012-10-05T18:53:10.983 回答
0

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

您可以从请求中获取参数并将它们转换为字节数组吗?

String source = "" +request.getParameter("param1");
byte[] byteArray = source.getBytes("UTF-8");
于 2012-10-05T19:02:28.263 回答
0

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

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

于 2012-10-05T19:07:23.957 回答
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
于 2012-10-05T21:08:55.950 回答
0

您可以通过URL而不是File,您可以从 Javadocs 中找到它,因此:

MyObject ob = new ObjectMapper().readValue(url, MyObject.class);
于 2012-10-06T18:52:39.370 回答