0

java オブジェクトと Jackson を使用して、この json コンテンツを再帰的に作成するにはどうすればよいですか? :

{
    "children": [
        {
            "children": [
                {
                    "name": "cluster",
                    "children": [
                        {
                            "name": "AgglomerativeCluster",
                            "size": 3938
                        },
                        {
                            "name": "TestCLuster",
                            "size": 3938
                        }
                    ]
                }
            ],
            "name": "analytics"
        }
    ],
    "name": "flare"
}

これまでの私のオブジェクト構造は、DendogramVO という名前の親と、子 List を持つ Children という名前の子クラスです。

import java.util.List;

public class DendogramVO {
    private List<Children> children;
    private String name;

    public List<Children> getChildren() {
        return this.children;
    }

    public void setChildren(List<Children> children) {
        this.children = children;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

import java.util.List;

public class Children {

    private List<Children> children;
    private String name;

    public List<Children> getChildren() {
        return children;
    }

    public void setChildren(List<Children> children) {
        this.children = children;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}
4

1 に答える 1

2

JSON には不明なプロパティが含まれていることに注意してください。ObjectMapperそれらに出くわしたときに失敗しないように構成する必要があります(またはそれらをクラスに追加します)

String s="{ \"children\": [ { \"children\": [ { \"name\": \"cluster\", \"children\": [ { \"name\": \"AgglomerativeCluster\", \"size\": 3938 }, { \"name\": \"TestCLuster\", \"size\": 3938 } ] } ], \"name\": \"analytics\" } ], \"name\": \"flare\"}";
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Children children = mapper.readValue(s, Children.class);

System.out.println(children.getChildren());

シンプルなChildren#toString()プリントで

[[children = [[children = [[children = null, name = AgglomerativeCluster], [children = null, name = TestCLuster]], name = cluster]], name = analytics]]
于 2013-10-15T20:28:20.143 に答える