从JSon数组到自定义数据结构

时间:2016-05-10 19:01:49

标签: android json gson

假设我需要使用从服务器获取的数据填充二进制搜索树。进一步说来自服务器的数据是节点的json数组

 "parts":[{"id":1,"name":"apple"},{"id":12,"name":"orange"},{"id":21,"name":"pen"},{"id":214,"name":"kite"}]//where each {} represents a node

如何使用GSon将节点数组读入我的BST?

如果你记得BST有两个班级

public class BST{
    private Note root;
}

public class Node{
  String el;
  Node left, right;
}

如果BST太难了,想象一下更简单

public class MyDataStructure{
   private List<Part> partsList;
   …
}

public class Part{
  String el;
  List<String> stuff;
}

如何在Android上使用GSon使用partsList填充MyDataStructure?作为旁注,我宁愿帮助解决问题的MyDataStruction版本。

1 个答案:

答案 0 :(得分:1)

好的..你可以用这个作为参考:

定义一个类pojo 和一个水果(是数组/列表/集合)

pojo

class Pojo {
    @Override
    public String toString() {
        return "Pojo [parts=" + parts + "]";
    }
    private List<Fruits> parts;
}

水果

class Fruits {
    private int id;
    private String name;
    @Override
    public String toString() {
        return "[id=" + id + ", name=" + name + "]";
    }
}

实施

String json = "{\"parts\": [{\"id\":1,\"name\":\"apple\"},{\"id\":2,\"name\":\"pear\"},{\"id\":3,\"name\":\"kiwi\"}]}";
Gson g = new Gson();
Pojo p = g.fromJson(json, Pojo.class);
System.out.println(p);

MyDataStructure人口

向pojo添加一个setter getter,这样你就可以使用list了,为fruit类添加setter和getter,这样你就可以获得id和名字..

所以在pojo对象p中你可以做p.getList()并迭代元素

类似的东西:

Pojo p = g.fromJson(json, Pojo.class);
System.out.println(p);
for (Fruits f : p.getParts()) {
    System.out.println(f.getId());
    System.out.println(f.getName());
}