1、ObjectMapper通过节点树的方式解析JSON字符串
1.1、通过节点直接获取属性值
1.1.1、测试代码
node.get("order_id"):直接获取JSON中属性对应的值
@Test
public void parseJson() throws Exception{
//创建json字符串,模拟从外界接收的订单信息
//order_id:订单id total_amount:总价格 subject:产品信息
//goods_detail:商品id order_type:订单类型
//其中goods_detail属性对应的值还是JSON字符串
String orderInfo="{\"order_id\":\"202303200101\",\"total_amount\":\"88.88\",\"subject\":\"huaweiMate60pro\",\"goods_detail\":{\"goods_id\":\"sp_001\",\"goods_name\":\"huaweiMate60pro 1T\"},\"order_type\":\"食品\"}";
ObjectMapper mapper = new ObjectMapper();
// 获取根节点
JsonNode node = mapper.readTree(orderInfo);
// 从根节点获取属性为order_id的值
JsonNode orderIdNode=node.get("order_id");
//order_id=>"202303200101"
System.out.println("order_id=>"+orderIdNode);
JsonNode goodsDetailNode=node.get("goods_detail");
//goodsDetailNode=>{"goods_id":"sp_001","goods_name":"huaweiMate60pro"}
System.out.println("goodsDetailNode=>"+goodsDetailNode);
//获取goods_detailJSON中的值
JsonNode goodsIdNode=goodsDetailNode.get("goods_id");
//goods_id=>"sp_001"
System.out.println("goods_id=>"+goodsIdNode);
}
1.1.2、结果输出
1.2、通过循环的方式获取JSON中的所有值
1.2.1、测试代码
@Test
public void parseJson() throws Exception{
//创建json字符串,模拟从外界接收的订单信息
//order_id:订单id total_amount:总价格 subject:产品信息
//goods_detail:商品id order_type:订单类型
//其中goods_detail属性对应的值还是JSON字符串
String orderInfo="{\"order_id\":\"202303200101\",\"total_amount\":\"88.88\",\"subject\":\"huaweiMate60pro\",\"goods_detail\":{\"goods_id\":\"sp_001\",\"goods_name\":\"huaweiMate60pro 1T\"},\"order_type\":\"食品\"}";
ObjectMapper mapper = new ObjectMapper();
// 获取根节点
JsonNode node = mapper.readTree(orderInfo);
//通过循环的方式获取JSON的值
Iterator<JsonNode> iterator = node.elements();
while (iterator.hasNext()) {
JsonNode student = iterator.next();
// 获取节点文本
//String name=student.get("goods_id").asText();
System.out.println(student);
}
}
1.2.2、结果输出
2、JSON与Object、Map、List相互转化
使用地址:https://mp.csdn.net/mp_blog/creation/editor/134275828