由于项目需要需要解析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> 的简单实现相关推荐

  1. php json decode 数组,php使用json_decode将json转换为数组

    php使用json_decode将json转换为数组2017-09-22 22:58 当我们学习php渐入佳境的时候,难免会遇到许多未曾想到过的问题. 比如说获取数据,获取下来是一些乱七八糟的字符. ...

  2. Cinchoo ETL——快速入门:将JSON转换为CSV文件

    目录 1.简介 2. 要求 3. 如何使用 3.1 样本数据 3.2 快速转换 3.3 使用POCO对象 3.4 使用投影 下载 Cinchoo ETL 源码 下载 Cinchoo ETL 二进制文件 ...

  3. 将RGB值转换为灰度值的简单算法(转)

    将RGB值转换为灰度值的简单算法 原文:http://blog.163.com/zhaowei0425@126/blog/static/475860302011311103956748/ RGB是如何 ...

  4. C#处理微信json(将JSON转换为对象)

    刚才做微信获取粉丝基本信息,获取了json数据,但怎么把json转换为对象呢? 师傅告诉我有两种方法(还有没有其它的我就不知道了),一个是http://json2csharp.com/这个网站,把js ...

  5. ASP.NET Core和json请求这样用真简单,axios、微信小程序得救了

    本文介绍了一种在ASP.NET Core MVC/ASP.NET Core WebAPI中,将axios等前端提交的json格式请求数据,映射到Action方法的普通类型参数的方法,并且讲解了其实现原 ...

  6. 使用XStream将JSON转换为XML到Java对象

    XStream库可以是将JSON从Java转换为XML来回转换的有效工具. 让我们逐一探究它们中的每一个,并查看使用了哪个驱动程序. 处理JSON 要将JSON转换为Java对象,您要做的就是使用适当 ...

  7. 如何在命令行中使用jq将JSON转换为CSV

    by Knut Melvær 通过纳特·梅尔瓦 如何在命令行中使用jq将JSON转换为CSV (How to transform JSON to CSV using jq in the command ...

  8. JSON转换为JS对象和JS对象转换为JSON

    1. JSON转换为JS对象 名称 parse 类型 执行类 参数 json: string JSON字符串 返回值 js对象 示例 parse('{"a":"abc&q ...

  9. 多层嵌套json转换为Map再转换为单层

    多层嵌套json转换为Map再转换为单层 最近在实习的时候,需要将多层嵌套的json转换为单层的json.并且把json进行格式化.于是参照网上的网上的方法使用谷歌的gson利用递归的实现了多层jso ...

  10. 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 ...

最新文章

  1. 开源许可证 如何工作_开源许可证的工作方式以及如何将其添加到您的项目中...
  2. idea clone 华为云仓库
  3. 什么是传感器融合?我们从“盲人摸象”讲起……
  4. 零基础学python看什么书-零基础学python推荐几本python学习的书籍
  5. Linux软件安装的补充
  6. Sql2008R2 日志无法收缩解决方案
  7. The world at your fingertips — 天涯明月刀幕后23(海战)
  8. 移动端iphone抓包调试神器—Stream安装和使用(一)
  9. 计算机科学与技术大学生职业规划,计算机科学与技术大学生职业生涯规划ppt
  10. nodejs基础-函数
  11. 佳博标签打印机如何打印条码流水号
  12. 软件测试缺陷报告的5c标准
  13. 【Win10】使用“Windows照片查看器”查看照片
  14. net stop sharedaccess命令 2009-1-15 11:10
  15. 给女友定时发送睡前小故事
  16. Java程序员修炼之道 人民邮电出版社 吴海星译
  17. 基于微信小程序的评分小程序
  18. 统计综合指标有哪些?
  19. java中什么是空指针异常以及为什么会产生空指针异常
  20. Google Maps API –地图类型示例

热门文章

  1. 使用python创建文件夹快捷方式
  2. word-取消超链接的两个步骤
  3. 前端实现红包雨功能_最全解密微信红包随机算法(含代码实现)
  4. 键盘猫怎么设置?直播显示鼠标键盘猫咪跟随动作软件下载
  5. 用js遍历list集合
  6. traefik -- 流量复制
  7. php调用支付宝微信支付接口 免签约 实测能用
  8. Python基础 - csv文件格式
  9. 集成电路芯片半导体中英文对照术语词汇表(转)
  10. 远离腰痛的好方法——如何锻炼腰背部肌肉?