将值插入ObjectNode并返回Jackson json库中的JsonNode

时间:2014-11-24 11:40:04

标签: java json jackson

我试图以下列格式将值插入json对象并将其保存到数据库中。

  {
        "mainObject": {
            "childObject1": {
                "validator": {
                    "dataType": "TEXT",
                    "regEx": "^[a-zA-Z0-9_]*{3,10}$"
                },
                "input": "Enter data value here"
            },
            "childObject2": {
                "validator": {
                    "dataType": "TEXT",
                    "regEx": "^[a-zA-Z0-9_]*{3,10}$"
                },
                "input": "Enter data value here"
            }
        }
    }

我需要在标签中输入输入值。像这样:

{
    "mainObject": {
        "childObject1": {
            "validator": {
                "dataType": "TEXT",
                "regEx": "^[a-zA-Z0-9_]*{3,10}$"
            },
            "input": "Input 1"
        },
        "childObject2": {
            "validator": {
                "dataType": "TEXT",
                "regEx": "^[a-zA-Z0-9_]*{3,10}$"
            },
            "input": "Input 2"
        }
    }
}

我在java中尝试了以下代码片段。我能够将数据插入到正确的节点中。

String output = "{
    \"mainObject\": {
        \"childObject1\": {
            \"validator\": {
                \"dataType\": \"TEXT\",
                \"regEx\": \"^[a-zA-Z0-9_]*{3,10}$\"
            },
            \"input\": \"Enter data value here\"
        },
        \"childObject2\": {
            \"validator\": {
                \"dataType\": \"TEXT\",
                \"regEx\": \"^[a-zA-Z0-9_]*{3,10}$\"
            },
            \"input\": \"Enter data value here\"
        }
    }
}";
ObjectMapper mapper = new ObjectMapper();
JsonNode rootNode = mapper.readTree(output);
ObjectNode newMetadata = (ObjectNode)  rootNode.path("mainObject").path("childObject1");
newMetadata.put("inputValue", "Input 1");

我的问题是如何更新并将其写回mainObject节点。在使用该值更新子节点输入标记时,我想用此更新主对象并保存到数据库。

1 个答案:

答案 0 :(得分:0)

我已经粘贴了有答案的代码。我在看错了节点。我在之前的评论中提到,我没有真正看到关闭问题的选项。为了说清楚,答案是,只要我写入子节点,父节点也将具有该属性。这是工作代码,它不需要修复,因为我说我正在查看错误的节点。