ObjectMapper 解析 json

2023-10-14 21:59
文章标签 json 解析 objectmapper

本文主要是介绍ObjectMapper 解析 json,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

首先,net.sf.json.JSONObject.fromObject(json),解析josn字符串的时候,会存在浮点型数据误差的问题,如534733.92解析成
534733.94。建议使用 ObjectMapper

问题描述,在使用 ObjectMapper解析json数据的时候,json数据太多,只想解析需要的数据生成pojo对象。

解析的Class为Map, 可以先使用Object.class ,调试之后发现是 linkedHashMap类型。

        Map map = objectMapper.readValue(json, Map.class);Object emp = map.get("empList");ArrayList<LinkedHashMap> list = (ArrayList<LinkedHashMap>)emp;LinkedHashMap linkedHashMap = list.get(0);System.out.println(linkedHashMap.get("ename"));

 例,ParamVo中有empList,入参为 ParamVo生成的json字符串,如何只解析 empList 中的数据,转成对应的pojo对象。

public class MyTest {public static void main(String[] args) throws Exception{ObjectMapper objectMapper = new ObjectMapper();ParamVo paramVo = new ParamVo();paramVo.setCode("200");paramVo.setMesage("成功");List<Emp> emps = new ArrayList<>();emps.add(new Emp(1001,"zhangsan","java", new BigDecimal("10"),10));emps.add(new Emp(1003,"zhaoliu","php", new BigDecimal("30"),30));paramVo.setEmpList(emps);paramVo.setEmp(new Emp(1002,"lisi","c++", new BigDecimal("20"),20));//解析 ParamVo paramVo = new ParamVo(); 生成的json//paramVo========={"mesage":"成功","emp":{"empno":1002,"ename":"lisi","job":"c++","mgr":null,"hiredate":null,"sal":20,"comm":null,"deptno":20},"empList":[{"empno":1001,"ename":"zhangsan","job":"java","mgr":null,"hiredate":null,"sal":10,"comm":null,"deptno":10},{"empno":1003,"ename":"zhaoliu","job":"php","mgr":null,"hiredate":null,"sal":30,"comm":null,"deptno":30}]}String json = objectMapper.writeValueAsString(paramVo);System.out.println("paramVo========="+json);ParamVo paramVo1 = objectMapper.readValue(json, ParamVo.class);//解析 List<Emp> emps = new ArrayList<>(); 生成的json//empsString======[{"empno":1001,"ename":"zhangsan","job":"java","mgr":null,"hiredate":null,"sal":10,"comm":null,"deptno":10},{"empno":1003,"ename":"zhaoliu","job":"php","mgr":null,"hiredate":null,"sal":30,"comm":null,"deptno":30}]String empsString = objectMapper.writeValueAsString(emps);System.out.println("empsString======"+empsString);JavaType javaType = objectMapper.getTypeFactory().constructParametricType(List.class, Emp.class);List<Emp> list = objectMapper.readValue(empsString, javaType);//入参的 json 为 ParamVo paramVo = new ParamVo(); 生成的json,但是内容太多,只想解析 empList 的内容,转成对应的pojo//思路,可以通过 Object object = objectMapper.readValue(json, Object.class); debug查看该json生成的数据结构,发现是LinkedHashMapMap map = objectMapper.readValue(json, Map.class);Object emp = map.get("empList");ArrayList<LinkedHashMap> empList = (ArrayList<LinkedHashMap>)emp;for(int i=0;i<empList.size();i++){LinkedHashMap linkedHashMap = empList.get(i);System.out.println(linkedHashMap.toString());//{empno=1001, ename=zhangsan, job=java, mgr=null, hiredate=null, sal=10, comm=null, deptno=10}//{empno=1003, ename=zhaoliu, job=php, mgr=null, hiredate=null, sal=30, comm=null, deptno=30}//已经拿到 empList 的map数据,就可以转换成pojo了}}
}

 

这篇关于ObjectMapper 解析 json的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/213409

相关文章

python常见环境管理工具超全解析

《python常见环境管理工具超全解析》在Python开发中,管理多个项目及其依赖项通常是一个挑战,下面:本文主要介绍python常见环境管理工具的相关资料,文中通过代码介绍的非常详细,需要的朋友... 目录1. conda2. pip3. uvuv 工具自动创建和管理环境的特点4. setup.py5.

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

SpringBoot排查和解决JSON解析错误(400 Bad Request)的方法

《SpringBoot排查和解决JSON解析错误(400BadRequest)的方法》在开发SpringBootRESTfulAPI时,客户端与服务端的数据交互通常使用JSON格式,然而,JSON... 目录问题背景1. 问题描述2. 错误分析解决方案1. 手动重新输入jsON2. 使用工具清理JSON3.

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MySQL JSON 查询中的对象与数组技巧及查询示例

《MySQLJSON查询中的对象与数组技巧及查询示例》MySQL中JSON对象和JSON数组查询的详细介绍及带有WHERE条件的查询示例,本文给大家介绍的非常详细,mysqljson查询示例相关知... 目录jsON 对象查询1. JSON_CONTAINS2. JSON_EXTRACT3. JSON_TA

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和

Java中JSON格式反序列化为Map且保证存取顺序一致的问题

《Java中JSON格式反序列化为Map且保证存取顺序一致的问题》:本文主要介绍Java中JSON格式反序列化为Map且保证存取顺序一致的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录背景问题解决方法总结背景做项目涉及两个微服务之间传数据时,需要提供方将Map类型的数据序列化为co

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解