<dependency>
<groupId>com.github.wnameless.json</groupId>
<artifactId>json-flattener</artifactId>
<version>0.16.4</version>
</dependency>
public static void main(String[] args) {
String jsonStr = "";
jsonStr = FileUtil.readUtf8String("x.json");
Map<String, Object> flatJson = JsonFlattener.flattenAsMap(jsonStr);
flatJson.entrySet().forEach(System.out::println);
String unFlatten = JsonUnflattener.unflatten(flatJson);
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"
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· winform 绘制太阳,地球,月球 运作规律
· 上周热点回顾(3.3-3.9)