这是我的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吗?)
只需要一些提示让我更进一步。
谢谢!
答案 0 :(得分: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编写和读取,所以你不需要太在乎它的样子。