繁体   English   中英

如何使用杰克逊进行反序列化

[英]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"
}

使用JacksonInFiveMinutes中的代码

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM