[英]How to use Jackson to deserialise
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"
}
ObjectMapper映射器=新的ObjectMapper(); 地图userData = mapper.readValue(webResource.queryParams(queryParams).get(String.class);, Map.class);
哪里:
webResource.queryParams(queryParams).get(String.class);
从REST服务返回json
从Json,我想要2个地址属性以及distance属性以及2个状态。
我的黑客尝试:
ObjectMapper mapper = new ObjectMapper();
JsonNode jnode = mapper.readValue(s, JsonNode.class);
jnode.findValue("distance").findValue("value") //
这为我提供了我想要的价值。
不确定这是否是个好方法
在我看来findValue()
,除了不要将这两个findValue()
调用链接在一起会更安全,因为如果JSON字符串不包含第一个字符串,则可以得到NPE。 从JsonNode javadoc:
public abstract JsonNode findValue(String fieldName)
在此节点或其子节点中查找具有指定名称的JSON Object字段并返回其值的方法。 如果在此节点或其后代中找不到匹配的字段,则返回null 。
因此,我将检查第一个findValue()
结果,如果结果不为null,则执行第二个findValue()
(如果发生这种情况,请通过日志记录通知您)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.