Jackson第二篇【从JSON字符串中取值】

这篇博客介绍如何使用Jackson库从复杂的JSON字符串中提取指定节点的值,包括递归遍历查找特定路径的值。示例展示了如何获取TestVo对象中Person的name和childs的name,并提供了一个通用的方法`readValueFromJson`用于按路径提取值。
摘要由CSDN通过智能技术生成
 第一篇咱们主要学习了实体与json的相互转换的问题,但是咱们需要的是数据 你转换18遍我取不到数据也是扯淡,那么今天咱们就一起学习一下如何从使用Jackson从Json字符串中取值。废话不说直接上代码( 注意第一篇里面的方法我都移到JsonProcessUtil里面了方便使用 )。

    从Json字符串中取出指定节点的值

 

Java代码 复制代码
  1. public static void getValue(TestVo vo) throws Exception {   
  2.     // 准备工作 传入vo请参照第一篇里面的实体。此处不再重新贴上代码 浪费大家时间   
  3.     ObjectMapper mapper = JsonProcessUtil.getMapperInstance(false);   
  4.     String voJson = JsonProcessUtil.toJson(vo);   
  5.     JsonNode node = mapper.readTree(voJson);// 这里的JsonNode和XML里面的Node很像   
  6.     System.out.println("readValueFromJson>>>" + node.get("voName").toString());// 获取voName   
  7.     // 输出结果:readValueFromJson>>>一个容器而已   
  8. }  
	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的值 该怎么办呢?别着急,咱们走起!

 

Java代码 复制代码
  1. public static void getValue(TestVo vo) throws Exception {   
  2.     // 准备工作 传入vo请参照第一篇里面的实体。此处不再重新贴上代码 浪费大家时间   
  3.     ObjectMapper mapper = JsonProcessUtil.getMapperInstance(false);   
  4.     String voJson = JsonProcessUtil.toJson(vo);   
  5.     JsonNode node = mapper.readTree(voJson);// 这里的JsonNode和XML里面的Node很像   
  6.     node = node.get("pers");   
  7.     System.out.println("node是不是个集合:" + node.isArray());// 这个方法咱们后面会用到先让它给大家照个面   
  8.     for (int i = 0; i < node.size(); i++) {   
  9.         JsonNode childNode = node.get(i);   
  10.         System.out.println("readValueFromJson>>>" + childNode.get("name").toString());// 获取name   
  11.     }   
  12.     /*  
  13.      * 输出结果   
  14.      * node是不是个集合:true  
  15.      * readValueFromJson>>>张三   
  16.      * readValueFromJson>>>李四 <
Java,从JSON类型的List取值通常涉及以下步骤: 1. 引入JSON处理库:首先需要一个可以解析JSON的库,常见的有Google的Gson库、Jackson、Fastjson等。这里以Gson为例,首先需要在项目添加Gson的依赖。 2. 解析JSON字符串:使用Gson将JSON格式的字符串解析为Java对象。Gson可以将JSON字符串转换成Java对象,也可以将Java对象转换成JSON字符串。 3. 遍历List取值:将解析得到的JSON对象转换为具体的Java对象或者Map集合,然后遍历这个集合取出所需的数据。 下面是一个简单的示例代码: ```java import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.ArrayList; import java.util.List; // 假设有一个JSON字符串表示的List数据 String jsonListStr = "[{\"name\":\"张三\",\"age\":20},{\"name\":\"李四\",\"age\":22}]"; // 创建Gson实例 Gson gson = new Gson(); // 将JSON字符串转换为List的类型,这里假设列表存储的是具有name和age属性的对象 Type listType = new TypeToken<ArrayList<YourObject>>() {}.getType(); // 解析JSON字符串到List List<YourObject> userList = gson.fromJson(jsonListStr, listType); // 遍历List取值 for(YourObject user : userList) { System.out.println("Name: " + user.getName() + ", Age: " + user.getAge()); } ``` 在这个示例,`YourObject` 是一个自定义的Java类,用于表示列表的单个对象,并且它应该具有与JSON对象属性对应的成员变量以及相应的getter方法。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值