杰克逊,读/写嵌套属性

时间:2015-10-28 00:14:36

标签: java json jackson

使用Jackson,我正在创建一个像这样的Json对象:

{"A": {
    "B": {
        "C": {
            "D": 1
        }
    }
}}

使用下一个代码

ObjectNode rootNode = JsonNodeFactory.instance.objectNode();
ObjectNode aNode = JsonNodeFactory.instance.objectNode();
ObjectNode bNode = JsonNodeFactory.instance.objectNode();
ObjectNode cNode = JsonNodeFactory.instance.objectNode();
cNode.put("D", 1);
bNode.set("C", cNode);
aNode.set("B", bNode);
rootNode.set("A", aNode);

有没有更简单的方法来创建它?类似的东西:

ObjectNode rootNode = JsonNodeFactory.instance.objectNode();
rootNode.set("A/B/C/D",1);

同样阅读类似的对象有一种简单的方法来获得" D"的价值?

2 个答案:

答案 0 :(得分:4)

是的,您可以使用以下方法创建嵌套结构:

ObjectNode root = JsonNodeFactory.instance.objectNode();
root.with("A").with("B").with("C").put("D", 1);

答案 1 :(得分:1)

是的,你可以这样做:

import java.io.IOException;
import org.codehaus.jackson.JsonNode;
import org.codehaus.jackson.JsonParseException;
import org.codehaus.jackson.map.JsonMappingException;
import org.codehaus.jackson.map.ObjectMapper;

public class TestJackson {

public static void main(String[] args) throws JsonParseException, JsonMappingException, IOException {
    ObjectMapper mapper = new ObjectMapper();
    JsonNode node = mapper.readValue("{\"A\": {\"B\": { \"C\": {\"D\": 1 } }}}", JsonNode.class);
}
}