我如何将他们的孩子与他的头关联?Gson Java
这是我创建的方法,一切都很好,但是我不能在HashMap hm中将他的父亲与孩子联系起来。我希望有人帮助我。谢谢我如何将他们的孩子与他的头关联?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
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);