java复杂对象转json_ObjectMapper转换复杂的json数据

首先声明:网上的错误认识,在网看到有人说ObjectMapper不能转换复杂的json字符串(比如数组对象,然后对象里面又包含子对象,子对象又包含了数组对象等,,)。

经过实测,不管多么复杂的json格式,都是可以用ObjectMapper转换的。

如果不能转换说明打开的方式不对。

首先说一下研究这个问题的过程吧,今天调试Consul,查询健康节点信息,因为要把节点信息的json串转换成java对象,发现ObjectMapper不好用了(因为没有仔细研究报错)。

不是ObjectMapper的问题,是没用对。

今天就详细总结一下几个容易错的点:

第一,ObjectMapper在自动识别java类时,如果类中有一个节点是Node,但是在ObjectMapper眼中它却是node(小写的n);这样如果你的json字符串中节点是Node,此时就会匹配不上。

第二,ObjectMapper在自动识别java类时,如果类中有一个节点是ID,则在ObjectMapper眼中它是id。

第三,所以定义类的属性要规范,首字母小写,对于ID,就应该写id,而不是ID或者iD。要规范。第一点和第二点也就是我犯错的原因。

第四,如果json字符串中,key的首字母大些了,则要用replace转换成小写。比如{"Node":"n1"},要替换成{"node":"n1"}。

第五,为什么选择ObjectMapper,因为效率高。

接下来给出仔细的过程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值