JAVA中将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

我在将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[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