java - 从嵌套 JSON 到平面 JSON 的 JAVA JSON 动态转换
问题描述
在 java 中,我试图将嵌套 JSON 转换为平面 JSON。下面是输入有效负载。
输入有效载荷:
{
"root": {
"data": {
"a": "1",
"b": {
"c": "2"
},
"test": [
{
"e": "3"
},
{
"f": "4"
}
],
"test1": [
{
"g": "5"
}
],
"test2": [
1,
2,
3
]
}
}
}
从上面的有效负载中,我试图转换为以下扁平化的 JSON。
{
"root.data.a":"1",
"root.data.b.c":"2",
"root.data.test[]":[
{
"e": "3"
},
{
"f": "4"
}
],
"root.data.test1[].g":"5",
"root.data.test2":[1,2,3]
}
在上述 JSON 中,转换为平面 JSON 时使用了以下条件。
如果 JSONObject 包含嵌套的 JSONObject 和值作为除 JSONArray 之外的任何数据类型,则平面 JSON 的键和值必须
"root.data.a"
为 1,值必须为 1。如果 JSONObject 由 JSONArray 组成,并且 JSONArray 的长度大于 1,则平面 JSON 的键必须是
"root.data.test[]"
完整的 JSONArray,值必须是完整的 JSONArray。如果 JSONObject 由 JSONArray 组成,并且 JSONArray 的长度为 1,则平面 JSON 必须 key 必须由 JSON 数组中的所有 JSON object 元素组成,
"root.data.test1[].g"
并且 value 为“5”。如果 JSON 键的值为 Array 且没有任何 JSON 对象,则将值分配给平面 JSON 中的该路径,如键 as
"root.data.test2"
和值 as[1,2,3]
那么,如何从输入 JSON 转换为平面 JSON 。
解决方案
这将有助于https://github.com/wnameless/json-flattener它是一个 Java 实用程序,用于 FLATTEN 嵌套的 JSON 对象,甚至更多地用于 UNFLATTEN 它回来。
推荐阅读
- python - unable to do makemigrations command
- python - 如何在 plotly scattergeo 中自定义颜色条?
- docker - 将 Makefile 移植到 Jenkinsfile,但存在环境变量问题
- python - 如何用随机值刷新字典?
- sql - 有没有办法让我将这些行转换为 oracle 中的列?
- portable-executable - 如何计算导出表的内存虚拟地址的文件偏移量?
- javascript - 在 JavaScript 中,在没有默认参数的其他参数之前为某些参数定义具有默认参数的函数有什么意义?
- angular - 验证 ngx-admin Angular 项目中的表单布局
- node.js - 在上传multer之前检查存在的文件
- java - 为 React Native 客户端获取与服务器端 Java 代码类似的密文