我如何将他们的孩子与他的头关联?Gson Java

我如何将他们的孩子与他的头关联?Gson Java,java,json,hashmap,gson,jsonobject,Java,Json,Hashmap,Gson,Jsonobject,这是我创建的方法,一切都很好,但是我不能在HashMap hm中将他的父亲与孩子联系起来。我希望有人帮助我。谢谢 public void findChild(JsonArray jarray) { ArrayList<String> listChild = new ArrayList<String>(); HashMap<String, List<String>> hm = new HashMap<String

这是我创建的方法,一切都很好,但是我不能在HashMap hm中将他的父亲与孩子联系起来。我希望有人帮助我。谢谢

public void findChild(JsonArray jarray) {
        ArrayList<String> listChild = new ArrayList<String>();
        HashMap<String, List<String>> hm = new HashMap<String, List<String>>();

        String str = null;

        JsonElement element = null;
        JsonElement e;

        for (int j = 0; j < jarray.size(); j++) {
            e = jarray.get(j).getAsJsonObject().get("name");
            JsonObject jsonObj = jarray.get(j).getAsJsonObject();
            JsonArray jsonArray = jsonObj.getAsJsonArray("child");
            element = jsonObj.get("name");

            if (jsonArray.size() > 0) {

                str = e.getAsString();

                findAllChild(jsonArray);

            }

            listChild.add(element.getAsString());

        }

        hm.put(str, listChild);

        System.err.println("Hash: " + hm);

    }
以下是我的回应:

Hash: {null=[oneoneoneoneone, oneoneoneonetwo, oneoneoneonethree]}
Hash: {oneoneoneone=[oneoneoneone, oneoneonetwo, oneoneonethree]}
Hash: {oneoneone=[oneoneone, oneonetwo]}
Hash: {oneone=[oneone, onetwo, terzo]}
Hash: {null=[twotwooneone, twotwoonetwo, twotwoonethree]}
Hash: {twotwoone=[twotwoone, twotwotwo]}
Hash: {twotwo=[twoone, twotwo, twothree]}
Hash: {two=[one, two]}

如果您想将json字符串反序列化为java对象,下面的简单代码可能会对您有所帮助

此外,从下面的回答中,我了解到您需要将家长的参考信息保留在孩子身上

1定义pojo:

public class Item {
    private String name;
    private String id;
    private String photo;
    private Item[] child;
    private Item parent;

    public void defineParent(Item parent) {
        this.parent = parent;
        if(this.child != null && this.child.length > 0) {
            for (Item currentChild : this.child) {
                currentChild.defineParent(this);
            }
        }
    }

    // TODO: getters / setters
}
2将json反序列化到其中:

    String json = "{\"name\":\"one\",\"id\":\"YO\",\"child\":[{\"name\":\"one\",\"child\":[{\"id\":\"0001\",\"name\":\"oneone\",\"photo\":\"primo.jpg\",\"child\":[{\"id\":\"1\",\"name\":\"oneoneone\",\"child\":[{\"id\":\"1\",\"name\":\"oneoneoneone\",\"child\":[{\"id\":\"1\",\"name\":\"oneoneoneoneone\"},{\"id\":\"2\",\"name\":\"oneoneoneonetwo\"},{\"id\":\"3\",\"name\":\"oneoneoneonethree\"}]},{\"id\":\"2\",\"name\":\"oneoneonetwo\"},{\"id\":\"3\",\"name\":\"oneoneonethree\"}]},{\"id\":\"2\",\"name\":\"oneonetwo\"}]},{\"id\":\"0002\",\"name\":\"onetwo\",\"photo\":\"secondo.jpg\"},{\"id\":\"onethree\",\"name\":\"terzo\",\"photo\":\"terzo.jpg\"}]},{\"name\":\"two\",\"child\":[{\"id\":\"0004\",\"name\":\"twoone\",\"photo\":\"one.jpg\"},{\"id\":\"0005\",\"name\":\"twotwo\",\"photo\":\"two.jpg\",\"child\":[{\"id\":\"1\",\"name\":\"twotwoone\",\"child\":[{\"id\":\"1\",\"name\":\"twotwooneone\"},{\"id\":\"2\",\"name\":\"twotwoonetwo\"},{\"id\":\"3\",\"name\":\"twotwoonethree\"}]},{\"id\":\"2\",\"name\":\"twotwotwo\"}]},{\"id\":\"0006\",\"name\":\"twothree\",\"photo\":\"three.jpg\"}]}]}";
    Gson gson = new Gson();
    Item item = gson.fromJson(json, Item.class);
    item.defineParent(null);

编辑:父对象将通过defineParent方法递归地设置为子对象。所以每个孩子都知道自己的父母。

谢谢你的回复,但我已经定义了一个POJO作为你,我的json文件来加载资产,问题是,我有一个菜单,你必须从我的json文件中自动创建,为此我需要在父子之间创建引用,这样当我点击这个孩子时,通过输入一个特殊的bean,如果他有孩子的话,就会打开他的孩子。对不起,我的英语太差了。@Nick很难理解你到底需要什么,但我想你希望每个孩子都了解自己的父母,这样你就可以通过父母对孩子和孩子对父母的交流。对不起,如果我误解了你的意思@DevrimTuncer@Nick您可以在子级保留对父级的引用。不需要特别的豆子。请参阅我编辑的答案。
    String json = "{\"name\":\"one\",\"id\":\"YO\",\"child\":[{\"name\":\"one\",\"child\":[{\"id\":\"0001\",\"name\":\"oneone\",\"photo\":\"primo.jpg\",\"child\":[{\"id\":\"1\",\"name\":\"oneoneone\",\"child\":[{\"id\":\"1\",\"name\":\"oneoneoneone\",\"child\":[{\"id\":\"1\",\"name\":\"oneoneoneoneone\"},{\"id\":\"2\",\"name\":\"oneoneoneonetwo\"},{\"id\":\"3\",\"name\":\"oneoneoneonethree\"}]},{\"id\":\"2\",\"name\":\"oneoneonetwo\"},{\"id\":\"3\",\"name\":\"oneoneonethree\"}]},{\"id\":\"2\",\"name\":\"oneonetwo\"}]},{\"id\":\"0002\",\"name\":\"onetwo\",\"photo\":\"secondo.jpg\"},{\"id\":\"onethree\",\"name\":\"terzo\",\"photo\":\"terzo.jpg\"}]},{\"name\":\"two\",\"child\":[{\"id\":\"0004\",\"name\":\"twoone\",\"photo\":\"one.jpg\"},{\"id\":\"0005\",\"name\":\"twotwo\",\"photo\":\"two.jpg\",\"child\":[{\"id\":\"1\",\"name\":\"twotwoone\",\"child\":[{\"id\":\"1\",\"name\":\"twotwooneone\"},{\"id\":\"2\",\"name\":\"twotwoonetwo\"},{\"id\":\"3\",\"name\":\"twotwoonethree\"}]},{\"id\":\"2\",\"name\":\"twotwotwo\"}]},{\"id\":\"0006\",\"name\":\"twothree\",\"photo\":\"three.jpg\"}]}]}";
    Gson gson = new Gson();
    Item item = gson.fromJson(json, Item.class);
    item.defineParent(null);