如何使用Jackson将ObjectNode作为父对象添加到子ObjectNode

i2byvkas  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(175)

我想在一个嵌套结构中添加两个节点。第一个是我的初始状态。

INITIAL 

{
  "type" : "type",
  "features" : [ {
    "properties" : {
      "staticText" : "1",
      "assets" : {
        "metaData" : {
          "someMetaData"
        }
      }
    }
  } ],
}

我想添加“合并”和“节点”对象节点如下。然后我将有下面的一个。

DESIRED

{
  "type" : "type",
  "features" : [ {
    "merge" : {
     "properties" : {
       "staticText" : "1",
       "assets" : {
         "node": {
          "metaData" : {
            "someMetaData"
          }
         }
       }
     } 
   }
  } ],
}

我试着在下面的代码中放置空节点(“jsonNodes”),但是没有成功。我如何在第二个嵌套节点中声明?

root.with("merge").set("properties",jsonNodes);
brccelvz

brccelvz1#

https://github.com/octomix/josson
还原序列化

Josson josson = Josson.fromJsonString(
    "{" +
    "  \"type\" : \"type\"," +
    "  \"features\" : [ {" +
    "    \"properties\" : {" +
    "      \"staticText\" : \"1\"," +
    "      \"assets\" : {" +
    "        \"metaData\" : {" +
    "          \"someMetaData\" : \"xxx\"" +
    "        }" +
    "      }" +
    "    }" +
    "  } ]" +
    "}");

转型

JsonNode node = josson.getNode(
    "field(features" +
    "  .map(merge" +
    "    :field(properties" +
    "      .field(assets" +
    "        .map(node" +
    "          :field(metaData)" +
    "        )" +
    "      )" +
    "    )" +
    "  )" +
    ")");
System.out.println(node.toPrettyString());

输出量

{
  "type" : "type",
  "features" : [ {
    "merge" : {
      "properties" : {
        "staticText" : "1",
        "assets" : {
          "node" : {
            "metaData" : {
              "someMetaData" : "xxx"
            }
          }
        }
      }
    }
  } ]
}

相关问题