【问题标题】:How to create Java objects from a nested JSON file using gson?如何使用 gson 从嵌套的 JSON 文件创建 Java 对象?
【发布时间】:2015-08-30 10:28:13
【问题描述】:

我正在尝试使用 gson 来帮助我从 JSON 创建 Java 对象。一些示例将非常有帮助。

编辑 1: 示例 JSON:

{
  "version": "1.2.1",
  "updatedate": "16/08/2015",
  "comment": "Sample JSON.",
  "categories": [
    {
      "name": "Service",
      "id": 13,
      "taxesIDs": [],
      "taxTypeID": 3
    }
  ],
  "countries": [
    {
      "name": "Canada",
      "id": 4
    }
  ],
  "states": [
    {
      "name": "Yukon",
      "id": 151,
      "country": "Canada",
      "price": [
        {
          "name": "Sales",
          "id": 1,
          "taxes": [
            {
              "name": "General",
              "id": 1,
              "percent": 0
            },
            {
              "name": "Electronics",
              "id": 19,
              "percent": 5
            }
          ]
        },
        {
          "name": "Income",
          "id": 2,
          "taxes": [
            {},
            {}
          ]
        },
        {
          "name": "Service",
          "id": 3,
          "taxes": [
            {},
            {}
          ]
        }
      ]
    }
  ]
}

我想解析上面的 JSON 并创建具有相同层次结构的 Java 类。 谢谢。

【问题讨论】:

  • 你用谷歌搜索过什么吗?
  • 我用谷歌搜索,但没有找到任何有用的清晰示例。
  • @Tauqir 这是直截了当的。嵌套 JSON 怎么样?谢谢。
  • 请根据您的要求粘贴任何复杂的 json 字符串。我可能会提出一些建议。

标签: java android json parsing gson


【解决方案1】:

使用 this 链接从 json 创建您的 Java pojo 类。

比使用这样的类,

YourObject obj = gson.fromJson(yourjsonstring, YourObject.class);

更多信息请关注this 链接。

【讨论】:

  • 谢谢,但抛出错误我的 JSON 太大了; “有一个问题:您的输入大于 51200 个字符,请尝试将其缩小一点”
【解决方案2】:

我们只需要以与 JSON 相同的方式来构建我们的 Java 类。特别是在我的情况下:

Class Source {
String version, comment, updatedate;
Category[] categories;
Country[] countries;
State[] states;
}

Class Category {
String name;
...
}

同样适用于州、价格、税类。

一旦数据结构准备就绪,就可以使用@serhatSS 提到的 GSON。

String jsonString = new String(data);    // You have data in response
Gson gson = new Gson();
Source source = gson.fromJson(jsonString, Source.class);

现在 Source 类将拥有其成员中的所有数据,并且可以通过以下方式访问:

Source.countries  // of type Country
Source.comment    // String

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2020-09-29
    • 2021-10-02
    相关资源
    最近更新 更多