这个问题来自我自己的问题here,
嗯,我确实得到了预期的结果。现在,如果我想提取 JSON 响应的特定部分并用它来表示,将其保存在数据库中,我该怎么做?
我正在考虑使用杰克逊 JSON 解析器。我检查了教程,但它只使用文件而不是 HTTP 请求。
这个问题来自我自己的问题here,
嗯,我确实得到了预期的结果。现在,如果我想提取 JSON 响应的特定部分并用它来表示,将其保存在数据库中,我该怎么做?
我正在考虑使用杰克逊 JSON 解析器。我检查了教程,但它只使用文件而不是 HTTP 请求。
杰克逊是个不错的选择。我不知道您从教程中收集到了什么;您可能需要阅读它们之外的内容。Jackson 是一个很好的处理 JSON 的 Java 库。
我相信这就是你要找的。请注意,注释中的// or URL, Stream, Reader, String, byte[]
意思是可以使用任何形式的输入流。只需从您正在使用的 HTTP 连接获取输入流并解析即可。\
实际上,您可能已经阅读过的教程(使用对象映射)也可以完成同样的事情。读取 JSON 流的方法,无论是 String、InputStream 还是其他方法,都被重载以获取多个输入并将它们映射到相应的对象。
你可以传递一个字节而不是一个文件。查看杰克逊API
您可以从请求中获取参数并将它们转换为字节数组吗?
String source = "" +request.getParameter("param1");
byte[] byteArray = source.getBytes("UTF-8");
假设 JSON 是一个简单的普通对象,可以通过字符串读取。只需将输入流转换为正确图表集中的纯字符串,然后我认为可以使用 Jackson 映射器解析字符串。
getMapper().readValue(dataStr, Class.class);
我假设您的整个响应是一个 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
您可以通过URL
而不是File
,您可以从 Javadocs 中找到它,因此:
MyObject ob = new ObjectMapper().readValue(url, MyObject.class);