【问题标题】:Use hardcoded json strings when parsing with gson使用 gson 解析时使用硬编码的 json 字符串
【发布时间】:2013-06-03 16:56:13
【问题描述】:

对不起,如果之前已经回答过这个问题,但我没有找到任何东西。

问题如下:我使用 GSON 将我的 json 请求和响应序列化/反序列化为对象。效果很好,但是最近在序列化的时候遇到了一个问题:

我想发送一个复杂的请求。因为我没有设计服务器端,所以我必须用他们给我的东西来适应我自己,所以我有这个 json:

{
  "id": null,
  "name": "n",
  "description": "some description",
  "type": 1,
  "channel": 0,
  "styles": [{
    "styleID": 1,
    "style": {... // lots of properties nested one inside another }
  }]
}

问题是:我无法为“样式”的每个子属性创建一个类,它们是:“事件”、“按钮”、“标签”等... 所以我想我会这样说:

public class MyData {
  private Integer id;
  // ...
  private String styles = getStylesJsonString(); // hardcoded styles in json format
}

但我不能,因为最后它变成了:

 "styles": "[{...}]"

这是无效的(根据服务器)。

有什么想法吗?

【问题讨论】:

  • 你想序列化一些构建这样的 JSON 响应的类吗?或者您想将 JSON 响应反序列化到某些类中吗?
  • 问题是我需要将 MyData 对象序列化和反序列化到/从 json 中,唯一相关的信息是 id、名称和类型。但是在服务器端,他们期待更多的信息,例如样式,并且他们也需要有特定的字段。我想我会为此使用一个硬编码的字符串。

标签: json gson hardcoded


【解决方案1】:

这是预期的响应,因为您将 JSON 字符串分配给一个变量,而该变量只不过是一个字符串本身。我的建议使用

private Object styles;

并使用 GSON 进行反序列化,从而将结果转换为地图或地图列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多