来自REST服务的json对象
{
"destination_addresses" : [ "Chicago, IL, USA" ],
"origin_addresses" : [ "Syracuse, NY, USA" ],
"rows" : [
{
"elements" : [
{
"distance" : {
"text" : "1,090 km",
"value" : 1090383
},
"duration" : {
"text" : "10 hours 21 mins",
"value" : 37242
},
"status" : "OK"
}
]
}
],
"status" : "OK"
}
使用JacksonInFiveMinutes中的代码
ObjectMapper mapper=new ObjectMapper(); Map userData=mapper.read值(webResource.queryParams(queryParams). get(String.class);, Map.class);
在哪里:
webResource.queryParams(queryParams).get(String.class);
从REST服务返回json
从Json中,我想要2个地址属性、距离属性以及2个状态。
我的黑客尝试:
ObjectMapper mapper = new ObjectMapper();
JsonNode jnode = mapper.readValue(s, JsonNode.class);
jnode.findValue("distance").findValue("value") //
这让我得到了我想要的价值。
我不确定这是不是个好办法
在我看来,这没什么问题,只是不将这两个findValue()
调用链接在一起会更安全,因为如果JSON字符串不包含第一个调用,您可能会得到一个NPE。从JsonNode javadoc:
公共抽象JsonNode findValue(字符串字段名)
方法,用于在此节点或其子节点中查找具有指定名称的JSON对象字段,并返回其具有的值。如果在此节点或其子节点中未找到匹配字段,则返回null。
因此,我会检查第一个findValue()
结果,如果它不为null,则执行第二个findValue()
(如果发生这种情况,会通过日志通知您)。
我想要的示例代码:
我想用Jackson 2.13.1反序列化一个枚举。 我找到了以下解决方案。 仍将收到以下错误:
问题内容: 我使用杰克逊测试了Scala案例类的序列化。 DeserializeTest.java 福斯卡拉 当我运行上述Java类时,抛出了一个异常: 我如何(反)序列化Scala案例类? 问题答案: Jackson希望您的类是JavaBean,这意味着它希望该类的每个属性都具有getX()和/或setX()。 选项1 您可以使用注释BeanProperty在Scala中创建JavaBean类。
问题内容: 我整天都在寻找可以解决这个问题的东西,但是到目前为止我还没有碰到很多运气。 我的问题很简单:如何使用Jackson正确反序列化匿名对象。 在出现异常之前,此输出为:JSON = [“ com.foo.test.JacksonTest $ 1”,{“ value”:5}]: 线程“主”中的异常com.fasterxml.jackson.databind.JsonMappingExcept
问题内容: 我正在杰克逊1.6.2中使用REST Web服务/ ApacheWink。我如何注释枚举字段,以便Jackson对其进行反序列化? 内部阶层 Jackson的文档指出可以通过@JsonValue/来做到这一点,@JsonCreator但没有提供示例。 是否有人愿意像往常一样洒(java)bean? 问题答案: 如果您使用的是Jackson 1.9,则可以通过以下方式完成序列化: 因此,
问题内容: 我有一些类A,B,C,它们都继承自BaseClass类。 我有一个String json,其中包含A,B,C或BaseClass的json表示形式。 我想要某种方法将此字符串反序列化为BaseClass(多态反序列化)。像这样 可以是A,B,C或BaseClass中任何一个的Json String表示形式。 问题答案: 目前尚不清楚原始海报有什么问题。我猜这是两件事之一: 未绑定JSO