Java 中 Json 扁平化与去扁平化处理

  • 引入依赖
<!--依赖 -->
<dependency>
     <groupId>com.github.wnameless.json</groupId>
     <artifactId>json-flattener</artifactId>
     <version>0.16.4</version>
 </dependency>
  • demo
    public static void main(String[] args) {
        String jsonStr = "";
        jsonStr = FileUtil.readUtf8String("x.json");

        // 扁平化,深层次的json结构转成key-value
        Map<String, Object> flatJson = JsonFlattener.flattenAsMap(jsonStr);
        flatJson.entrySet().forEach(System.out::println);

        // 去扁平化,还原深层次的json
        String unFlatten = JsonUnflattener.unflatten(flatJson);

        // 扁平化级别默认.隔开,withSeparator 指定分割符
        JsonFlattener jsonFlattener = new JsonFlattener(jsonStr);
        Map<String, Object> map = jsonFlattener.withSeparator('-').flattenAsMap();
    }
  • 效果
# 原始json
{
    "code": 200,
    "data": [
        {
            "no": "1001",
            "school": "xxx市第一实验小学",
            "class": [
                {
                    "student": [
                        {
                            "name": "张同学",
                            "age": 6
                        },
                        {
                            "name": "王同学",
                            "age": 7
                        }
                    ],
                    "teacher": "吴老师",
                    "name": "一(1)班"
                }
            ]
        },
        {
            "no": "1002",
            "school": "xxx市第二实验小学",
            "class": [
                {
                    "student": [
                        {
                            "name": "欧阳同学",
                            "age": 6
                        }
                    ],
                    "teacher": "陈老师",
                    "name": "一(2)班"
                }
            ]
        }
    ],
    "requestId": "1680177848458"
}





# 扁平化
code=200
requestId=1680177848458
data[0]-school=xxx市第一实验小学
data[0]-no=1001
data[0]-class[0]-name=(1)班
data[0]-class[0]-teacher=吴老师
data[0]-class[0]-student[0]-name=张同学
data[0]-class[0]-student[0]-age=6
data[0]-class[0]-student[1]-name=王同学
data[0]-class[0]-student[1]-age=7
data[1]-school=xxx市第二实验小学
data[1]-no=1002
data[1]-class[0]-name=(2)班
data[1]-class[0]-teacher=陈老师
data[1]-class[0]-student[0]-name=欧阳同学
data[1]-class[0]-student[0]-age=6



# 去扁平化
{
    "code": 200,
    "data": [
        {
            "no": "1001",
            "school": "xxx市第一实验小学",
            "class": [
                {
                    "student": [
                        {
                            "name": "张同学",
                            "age": 6
                        },
                        {
                            "name": "王同学",
                            "age": 7
                        }
                    ],
                    "teacher": "吴老师",
                    "name": "一(1)班"
                }
            ]
        },
        {
            "no": "1002",
            "school": "xxx市第二实验小学",
            "class": [
                {
                    "student": [
                        {
                            "name": "欧阳同学",
                            "age": 6
                        }
                    ],
                    "teacher": "陈老师",
                    "name": "一(2)班"
                }
            ]
        }
    ],
    "requestId": "1680177848458"
}
posted @   little_lunatic  阅读(688)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示