栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JSON 转换为LIST<T> 的简单实现

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JSON 转换为LIST<T> 的简单实现

由于项目需要需要解析JSON,成为LIST的形式,不想每次都写一大堆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


    cn.hutool
    hutool-all
    5.6.6


    org.projectlombok
    lombok
    1.18.24
    provided

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 students = json2Bean(msg1, Student.class);
        for (Student student : students) {
            System.out.println(student);
        }
    }

    private static  List json2Bean(String msg, Class 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)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/937525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号