帮我解析这种json for android

时间:2011-07-09 19:07:49

标签: java android json parsing

我有这种来自api的json:

[
    {
        "id": "12",
        "name": "elo2",
        "status": "ok",
        "vulumes": [
            {
                "id": 17592,
                "name": "vol1",
                "status": "ok"
            }
        ]
    },
    {
        "id": "13",
        "name": "elo",
        "status": "ok",
        "vulumes": [
            {
                "id": "17596",
                "name": "vol2",
                "status": "ok"
            }
        ]
    }
]

ID 12和13它的架子,体积是货架的一部分,ID为17592和17596

我无法用json解析它,我试图使用gson或json,但我无法理解如何获取sime块,例如id为12的块,用于解析此架子上的货架和现有卷的信息。

你能帮帮我吗?在其他api中,我可以看到命名对象vith k / v,但没有任何内容。

1 个答案:

答案 0 :(得分:1)

有了Gson,您可以采取一种简单的方法。这演示了一个与JSON示例匹配的Java数据结构,以及如何使用Gson对其进行反序列化和序列化。

public class Foo
{
  public static void main(String[] args) throws Exception
  {
    Gson gson = new Gson();
    Type thingsType = new TypeToken<List<Thing>>() {}.getType();
    List<Thing> things = gson.fromJson(new FileReader("input.json"), thingsType);
    System.out.println(gson.toJson(things));
  }
}

class Thing
{
  String id;
  String name;
  String status;
  List<Vulume> vulumes;
}

class Vulume
{
  String id;
  String name;
  String status;
}

由于两种对象类型的属性几乎相同,因此可能的意图是只有一种对象类型,并引用了相同类型的对象集合。这就是看起来的样子。

public class Foo
{
  public static void main(String[] args) throws Exception
  {
    Gson gson = new Gson();
    Type thingsType = new TypeToken<List<Vulume>>() {}.getType();
    List<Vulume> things = gson.fromJson(new FileReader("input.json"), thingsType);
    System.out.println(gson.toJson(things));
  }
}

class Vulume
{
  String id;
  String name;
  String status;
  List<Vulume> vulumes;
}