【问题标题】:Should GSON ignore varying types if they're not used in a class?如果类中没有使用不同的类型,GSON 是否应该忽略它们?
【发布时间】:2014-06-10 20:31:13
【问题描述】:

我正在进行一个返回 JSON 的 API 调用,该 JSON 具有一个特定字段,该字段要么返回 false,要么根据内容返回一个地图。这是一个我不关心的领域。我希望 GSON 会忽略这个特定的字段,尽管它似乎不是。对象生成失败并显示以下消息:

com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 403560

我已经看到了这个特殊的问题 (Gson deserialize json with varying value types)。我想确保在这样做之前我需要制作一个自定义反序列化器。我想知道我是否还有其他问题。

编辑:

例子:

"anonymous_flag": {  }

vs

"anonymous_flag": "yes"

另一个编辑:

实际上我的模型对象中有该字段...我引用了错误的类。评判:)

【问题讨论】:

  • 请您分享您的 JSON 字符串以使其更清晰吗?我已经在相同的上下文中回答了它。阅读HERE。它可能会帮助你。如果您需要更清楚的说明,请告诉我。
  • 正如我上面提到的,我确实在我的模型对象中包含了该字段,这就是问题所在。我会保留这个问题,以提醒其他人仔细检查他们的代码:P

标签: java android json gson


【解决方案1】:

如果您要将 JSON 反序列化为您自己设计的域对象,如果您对该值不感兴趣,则可以简单地省略其中的字段。 GSON 将忽略 JSON 中的字段。

【讨论】:

  • 包括似乎给我带来麻烦的领域。如果是这样,您确定 GSON 应该完全忽略它吗?也许我还有其他问题。
  • 我在发帖前测试了一下,没有报错。您使用的是哪个版本的 GSON?
  • 这里也一样。我无法解释。
  • 嗯...一定是发生了其他事情。
  • headdesk 是的,我的模型中确实包含了该字段。我看错了课程。
猜你喜欢
  • 1970-01-01
  • 2018-11-21
  • 2021-05-31
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多