0

这是我的 Json:

{"array":[
          {"pid":"1","product":"test","size":[
                                              {"id":"26","size":"6-13 weeks"},
                                              {"id":"25","size":"1-5 weeks"}]},
          {"pid":"2","product":"test2","size":[
                                              {"id":"31","size":"86\/92"},
                                              {"id":"27","size":"74\/80"}]}]}

我使用jsongen.byingtondesign.com生成了文件,但我似乎无法弄清楚如何获取数据(我查看了很多教程,但我只是变得更加困惑,因为它们都是不同的。)

我需要根据 pid 和 id 获取数据。我需要输出带有 pid ... 的产品字符串或带有 id ... 的大小字符串。(我应该重组我的 json 吗?)

只需要一些提示让我走得更远。

谢谢!

4

1 回答 1

1

您需要的结构类似于

class Size {int id; String size;}
class Product {int pid; String product; List<Size> size;}
class Shop {List<Product> products;}

然后打电话

Shop shop = gson.fromJson(jsonString, Shop.class);

在这里,我永远记不起什么是什么。结构看起来不错,名字却没有。我建议像

class Size {int id; String name;}
class Product {int id; String name; List<Size> sizes;}
class Shop {List<Product> products;}

现在我看到你更喜欢一种地图。这在 Java 中很容易做到,但也可以将其放入 Json 中。但是,您要么引入冗余,要么id从对象中丢失。代替

[
    {"id":"26","size":"6-13 weeks"},
    {"id":"25","size":"1-5 weeks"}
]

你可以使用

{
    "26": {"id":"26","size":"6-13 weeks"},
    "25": {"id":"25","size":"1-5 weeks"}
}

(有冗余)或

{
    "26": {"size":"6-13 weeks"},
    "25": {"size":"1-5 weeks"}
}

Size对象缺少它的id)或

{
    "26": "6-13 weeks",
    "25": "1-5 weeks"
}

它是紧凑的,但几乎不可扩展。无论如何,我会从 Java 而不是 Json 开始,这会让事情变得更容易,因为你要处理很多事情是 Java。Json 字符串由 Gson 写入和读取,因此您无需太在意它的外观。

于 2012-08-06T12:20:33.017 回答