这个问题来自我自己的问题,
Getting JSON response into String in Java?
好吧,我确实得到了预期的结果。现在,如果我想提取JSON响应的特定部分并使用它来说,将它保存在数据库中,我该怎么做?
我正在考虑使用Jackson JSON解析器。我查看了教程,但它只使用了一个文件而不是HTTP请求。
答案 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);