JSON 转换为LIST<T> 的简单实现
由于项目需要需要解析JSON,成为LIST<T>的形式,不想每次都写一大堆GET,SET方法.故写了此类,方便使用.
1.支持的格式
2.项目需要的pom
3.项目源码
3.1 项目的测试VO
3.2 项目的工具类
4.测试结果
1.可以支持的格式如下:
格式1:{"seqNo":"1","updateTime":"20220527","obj":{"clazz":"two","grade":"one"}}
格式2:{"seqNo":"1","updateTime":"20220527","obj":{"clazz":"two","grade":"one","list":[{"sex":"male","age":"18","name":"xiaosan"},{"sex":"female","age":"20","name":"lisan"}]}}
格式3:{"seqNo":"1","updateTime":"20220527","list":[{"sex":"male","age":"18","name":"xiaosan"},{"sex":"female","age":"20","name":"lisan"}]}
2.项目需要的pom
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.6.6</version> </dependency> <dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.24</version><scope>provided</scope> </dependency>
3.项目源码
3.1 项目的测试VO
package com.sun.common; import lombok.Data; import java.time.LocalDateTime; @Data public class Student {private String id;private String seqNo;private String updateTime;private String clazz;private String grade;private String sex;private String age;private String name;private LocalDateTime createTime; }
3.2 项目的工具类
package com.sun.common; import cn.hutool.json.JSONObject; import java.time.LocalDateTime; import java.util.*; public class Test {private static String msg1 = "{\"seqNo\":\"1\",\"updateTime\":\"20220527\",\"obj\":{\"clazz\":\"two\",\"grade\":\"one\"}}";private static String msg2 = "{\"seqNo\":\"1\",\"updateTime\":\"20220527\",\"obj\":{\"clazz\":\"two\",\"grade\":\"one\",\"list\":[{\"sex\":\"male\",\"age\":\"18\",\"name\":\"xiaosan\"},{\"sex\":\"female\",\"age\":\"20\",\"name\":\"lisan\"}]}}";private static String msg3 = "{\"seqNo\":\"1\",\"updateTime\":\"20220527\",\"list\":[{\"sex\":\"male\",\"age\":\"18\",\"name\":\"xiaosan\"},{\"sex\":\"female\",\"age\":\"20\",\"name\":\"lisan\"}]}";public static void main(String[] args) {System.out.println(String.format("msg=%s", msg1));System.out.println(String.format("msg=%s", msg2));System.out.println(String.format("msg=%s", msg3));List<Student> students = json2Bean(msg1, Student.class);for (Student student : students) {System.out.println(student);}}private static <T> List<T> json2Bean(String msg, Class<T> t) {JSONObject object = new JSONObject(msg);Map map = object.toBean(Map.class);Map objMap = new HashMap();List valueList = null;List result = new ArrayList();for (Object key : map.keySet()) {Object valueObj = map.get(key);if (valueObj instanceof String) {objMap.put(key, valueObj);} else if (valueObj instanceof List) {valueList = (List) valueObj;} else {Map valueMap = (Map) valueObj;if (isAllStringKey(valueMap)) {objMap.putAll(valueMap);} else {valueList = getValueList(objMap, valueMap);}}}setDefaultParam(objMap);if (valueList != null) {for (Object value : valueList) {Map valueMap = (Map) value;valueMap.putAll(objMap);result.add(new JSONObject(valueMap).toBean(t));}return result;}result.add(new JSONObject(objMap).toBean(t));return result;}private static List getValueList(Map objMap, Map valueMap) {List valueList = null;for (Object key : valueMap.keySet()) {Object valueObj = valueMap.get(key);if (valueObj instanceof String) {objMap.put(key, valueObj);} else if (valueObj instanceof List) {valueList = (List) valueObj;}}return valueList;}private static boolean isAllStringKey(Map valueMap) {for (Object key : valueMap.keySet()) {Object valueObj = valueMap.get((String) key);if (valueObj instanceof List) {return false;}}return true;}private static void setDefaultParam(Map objMap) {objMap.put("id", UUID.randomUUID());objMap.put("createTime", LocalDateTime.now());} }4.测试结果 msg={"seqNo":"1","updateTime":"20220527","obj":{"clazz":"two","grade":"one"}} msg={"seqNo":"1","updateTime":"20220527","obj":{"clazz":"two","grade":"one","list":[{"sex":"male","age":"18","name":"xiaosan"},{"sex":"female","age":"20","name":"lisan"}]}} msg={"seqNo":"1","updateTime":"20220527","list":[{"sex":"male","age":"18","name":"xiaosan"},{"sex":"female","age":"20","name":"lisan"}]} Student(id=c30b4d16-8aaf-4d1f-8c80-b1b90700df65, seqNo=1, updateTime=20220527, clazz=two, grade=one, sex=null, age=null, name=null, createTime=2022-05-28T00:40:57.235)
JSON 转换为LIST<T> 的简单实现相关推荐
- php json decode 数组,php使用json_decode将json转换为数组
php使用json_decode将json转换为数组2017-09-22 22:58 当我们学习php渐入佳境的时候,难免会遇到许多未曾想到过的问题. 比如说获取数据,获取下来是一些乱七八糟的字符. ...
- Cinchoo ETL——快速入门:将JSON转换为CSV文件
目录 1.简介 2. 要求 3. 如何使用 3.1 样本数据 3.2 快速转换 3.3 使用POCO对象 3.4 使用投影 下载 Cinchoo ETL 源码 下载 Cinchoo ETL 二进制文件 ...
- 将RGB值转换为灰度值的简单算法(转)
将RGB值转换为灰度值的简单算法 原文:http://blog.163.com/zhaowei0425@126/blog/static/475860302011311103956748/ RGB是如何 ...
- C#处理微信json(将JSON转换为对象)
刚才做微信获取粉丝基本信息,获取了json数据,但怎么把json转换为对象呢? 师傅告诉我有两种方法(还有没有其它的我就不知道了),一个是http://json2csharp.com/这个网站,把js ...
- ASP.NET Core和json请求这样用真简单,axios、微信小程序得救了
本文介绍了一种在ASP.NET Core MVC/ASP.NET Core WebAPI中,将axios等前端提交的json格式请求数据,映射到Action方法的普通类型参数的方法,并且讲解了其实现原 ...
- 使用XStream将JSON转换为XML到Java对象
XStream库可以是将JSON从Java转换为XML来回转换的有效工具. 让我们逐一探究它们中的每一个,并查看使用了哪个驱动程序. 处理JSON 要将JSON转换为Java对象,您要做的就是使用适当 ...
- 如何在命令行中使用jq将JSON转换为CSV
by Knut Melvær 通过纳特·梅尔瓦 如何在命令行中使用jq将JSON转换为CSV (How to transform JSON to CSV using jq in the command ...
- JSON转换为JS对象和JS对象转换为JSON
1. JSON转换为JS对象 名称 parse 类型 执行类 参数 json: string JSON字符串 返回值 js对象 示例 parse('{"a":"abc&q ...
- 多层嵌套json转换为Map再转换为单层
多层嵌套json转换为Map再转换为单层 最近在实习的时候,需要将多层嵌套的json转换为单层的json.并且把json进行格式化.于是参照网上的网上的方法使用谷歌的gson利用递归的实现了多层jso ...
- Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml
Java XML转换为JSON XML解析 转换为JSON Java 实现JSON转换为XML json转xml 一.转换代码 1.XML字符串转换为JSON /*** description: XM ...
最新文章
- 开源许可证 如何工作_开源许可证的工作方式以及如何将其添加到您的项目中...
- idea clone 华为云仓库
- 什么是传感器融合?我们从“盲人摸象”讲起……
- 零基础学python看什么书-零基础学python推荐几本python学习的书籍
- Linux软件安装的补充
- Sql2008R2 日志无法收缩解决方案
- The world at your fingertips — 天涯明月刀幕后23(海战)
- 移动端iphone抓包调试神器—Stream安装和使用(一)
- 计算机科学与技术大学生职业规划,计算机科学与技术大学生职业生涯规划ppt
- nodejs基础-函数
- 佳博标签打印机如何打印条码流水号
- 软件测试缺陷报告的5c标准
- 【Win10】使用“Windows照片查看器”查看照片
- net stop sharedaccess命令 2009-1-15 11:10
- 给女友定时发送睡前小故事
- Java程序员修炼之道 人民邮电出版社 吴海星译
- 基于微信小程序的评分小程序
- 统计综合指标有哪些?
- java中什么是空指针异常以及为什么会产生空指针异常
- Google Maps API –地图类型示例