【问题标题】:de-serialize Json with Gson使用 Gson 反序列化 Json
【发布时间】:2012-08-06 11:17:11
【问题描述】:

这是我的 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 吗?)

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

谢谢!

【问题讨论】:

  • 如果您尝试创建一个对象并使用gson对其进行序列化,您可能会更容易理解。
  • 嗯...你的意思是反过来?我不明白 ;) android 开发新手...
  • 不,我的意思是取一个你理解的对象,然后把它变成 json,然后你就知道它会是什么样子,以及你应该如何制作你的 json。 GSON 有 toJson 和 fromJson。所以它很容易使用。

标签: android json deserialization gson


【解决方案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 开始,这会让事情变得更容易,因为你会处理很多事情。 Json 字符串由 Gson 编写和读取,所以你不需要太在意它的样子。

【讨论】:

  • 谢谢,我会做一些研究,如果这有帮助/有效,我会接受答案。我觉得自己像个菜鸟;)你基本上是说我应该用 java 地图来做这个?
  • 这取决于你。我主要是说它在 Java 中的外观很重要。为你编写类,创建一个对象并序列化它;这让事情变得更清楚了。
  • 我正在使用“26”:{“id”:“26”,“size”:“6-13 周”}。它工作完美!现在我只需要了解如何在 php 中生成 json... ;)
猜你喜欢
  • 2017-01-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多