JAVA中将JSON数组转换为结构化形式
我在将JSON的平面结构转换为结构化形式时遇到一些问题。 我们以以下形式从服务接收数据:JAVA中将JSON数组转换为结构化形式,java,json,jackson,Java,Json,Jackson,我在将JSON的平面结构转换为结构化形式时遇到一些问题。 我们以以下形式从服务接收数据: [ {'key':"Main1.del[1].x", "value": 0 }, {'key':"Main1.del[1].y", "value": 1 }, {'key':"Main1.del[2].x", "value": 5 }, {'key':"Main1.del
[
{'key':"Main1.del[1].x", "value": 0 },
{'key':"Main1.del[1].y", "value": 1 },
{'key':"Main1.del[2].x", "value": 5 },
{'key':"Main1.del[2].y", "value": 7 },
{'key':"Custom.stat[1].rev.max", "value": 45 },
{'key':"Custom.stat[1].rev.min", "value": -65 }
]
{
"Main1":{
"del":[
{
"x": 0,
"y": 1
},
{
"x": 5,
"y": 7
}
]
},
"Custom":{
"stat":[
{
"rev":{
"max":45,
"min":-65,
}
}
]
}
}
但我们需要将其转化为以下形式:
[
{'key':"Main1.del[1].x", "value": 0 },
{'key':"Main1.del[1].y", "value": 1 },
{'key':"Main1.del[2].x", "value": 5 },
{'key':"Main1.del[2].y", "value": 7 },
{'key':"Custom.stat[1].rev.max", "value": 45 },
{'key':"Custom.stat[1].rev.min", "value": -65 }
]
{
"Main1":{
"del":[
{
"x": 0,
"y": 1
},
{
"x": 5,
"y": 7
}
]
},
"Custom":{
"stat":[
{
"rev":{
"max":45,
"min":-65,
}
}
]
}
}
在Java中是否有这种转换的解决方案?实际上,我们正在使用Jackson对JSON数据进行序列化和反序列化
很抱歉,如果有相同的主题,我没有找到它。我不知道有哪个库可以为您这样做,您必须自己编写代码: 您必须将键值解析为它们的元素,对于这些元素,您必须根据需要创建必要的结构,例如,
“Main1.del[1].x”
意味着您需要
- 顶级对象节点(如果不存在,则创建该节点)
- 该对象中的
字段(如果不存在,则创建该字段)Main1
- 一个
操作符,意味着
是一个对象节点(如果它不在那里,则创建它)Main1
中的Main1
字段(如果不存在,则创建该字段)del
- 一个
索引,意味着[1]
是一个至少有一个或两个元素的数组节点(取决于零或一个基于数组的索引-如果还没有创建-如果太短则扩展)del
- 一个
操作符,意味着数组元素是一个对象节点(如果它不在那里,则创建它) - 数组元素对象中的
字段(如果不存在,则创建该字段)x
值
分配给最后一个节点
为了创建结构化JSON对象,还可以将Jackson与类一起使用,如ObjectNode
、ArrayNode
等。但您可能希望在不引入另一个中间JSON层的情况下动态创建POJO