第一篇咱们主要学习了实体与json的相互转换的问题,但是咱们需要的是数据 你转换18遍我取不到数据也是扯淡,那么今天咱们就一起学习一下如何从使用Jackson从Json字符串中取值。废话不说直接上代码(
注意第一篇里面的方法我都移到JsonProcessUtil里面了方便使用 )。
从Json字符串中取出指定节点的值
- public static void getValue(TestVo vo) throws Exception {
- // 准备工作 传入vo请参照第一篇里面的实体。此处不再重新贴上代码 浪费大家时间
- ObjectMapper mapper = JsonProcessUtil.getMapperInstance(false);
- String voJson = JsonProcessUtil.toJson(vo);
- JsonNode node = mapper.readTree(voJson);// 这里的JsonNode和XML里面的Node很像
- System.out.println("readValueFromJson>>>" + node.get("voName").toString());// 获取voName
- // 输出结果:readValueFromJson>>>一个容器而已
- }
public static void getValue(TestVo vo) throws Exception {
// 准备工作 传入vo请参照第一篇里面的实体。此处不再重新贴上代码 浪费大家时间
ObjectMapper mapper = JsonProcessUtil.getMapperInstance(false);
String voJson = JsonProcessUtil.toJson(vo);
JsonNode node = mapper.readTree(voJson);// 这里的JsonNode和XML里面的Node很像
System.out.println("readValueFromJson>>>" + node.get("voName").toString());// 获取voName
// 输出结果:readValueFromJson>>>一个容器而已
}
怎么样简单吧,但是这个作用不是很大啊!我想获取TestVo下面的Person的name的值 该怎么办呢?别着急,咱们走起!
- public static void getValue(TestVo vo) throws Exception {
- // 准备工作 传入vo请参照第一篇里面的实体。此处不再重新贴上代码 浪费大家时间
- ObjectMapper mapper = JsonProcessUtil.getMapperInstance(false);
- String voJson = JsonProcessUtil.toJson(vo);
- JsonNode node = mapper.readTree(voJson);// 这里的JsonNode和XML里面的Node很像
- node = node.get("pers");
- System.out.println("node是不是个集合:" + node.isArray());// 这个方法咱们后面会用到先让它给大家照个面
- for (int i = 0; i < node.size(); i++) {
- JsonNode childNode = node.get(i);
- System.out.println("readValueFromJson>>>" + childNode.get("name").toString());// 获取name
- }
- /*
- * 输出结果
- * node是不是个集合:true
- * readValueFromJson>>>张三
- * readValueFromJson>>>李四 <