赞
踩
从Json字符串中取出指定节点的值
怎么样简单吧,但是这个作用不是很大啊!我想获取TestVo下面的Person的name的值 该怎么办呢?别着急,咱们走起!
怎么样功能还行吧?如果这样你就满意了,那你也太容易满足了。现在我在项目中需要像xpath那样来查找某节点的值(不太了解xpath的童鞋别着急我以后会和大家一起学习下)。/a/b/c/d 这样找到某个节点的值。为了增加复杂度,我又给Person类里面增加 一个List<Person> childs;表示这个人的孩子那么咱们一往下需找的节点就多了……
首先看下我准备的数据
张三:有两个孩子 李四:有一个孩子 王二麻子:没有孩子
我现在要做的就是把所有的孩子找出来。
废话不多说直接看代码
好玩吧,接下来咱们就一起看下我这个readValueFormJson是如何实现的呢?
挺好吧,功能虽然实现了。但是童鞋们可能会对这个产生疑问,你他X的不是脱裤子放屁吗?先把Bean转换成Json再从Json中取值。效率低不说,而且还复杂。我直接通过get方法多好……如果你这样想了说明你是一个思考者!但是有种情况(本人在开发中遇到的)如果这个bean非常大 不同情况你需要的字段是不一样的 那你怎办? 根据情况判断if else if else if?如果有一百种情况呢?那不就累死了。所以在数据库里面配置不同业务情况从不同字段取值比较好,这样就会用到这种功能。另外附上:CommonUtil.isEmpty()方法
注意:JsonNode 提供了很多种取值的方法,但是为了通用我选择了toString()因为getTextValue(),getIntValue()……一些方法只能返回指定类型的值,这样不能达到通用。而且有一种情况如果我想要的是整个节点下面所有子节点的值呢?如果使用上面的方法就没办法了,只能使用toString()这时候它返回的是整个json字符串。注意:toString()方法如果只返回某一个属性的值 如:name 而不是一整个大节点如:name,age,gender,那么它会在返回的字符串上加双引号,用的时候注意去掉开始结束的双引号。
今天就学习到这,下篇文章我将与大家一起探讨一下为什么 我创建一个ObjectMapper对象要搞的那么复杂!不直接new。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。