0

我对 gson 反序列化有疑问。传入的 json 看起来像这样{"roles":{"name":"bla" "perm" : "bla"}} ,或者当有更多可用的角色时,它看起来像这样 {"roles":[{"name":"bla" "perm" : "bla"}{"name":"hihi" "perm" : "hihi"}]}。所以第一次参数角色是一个对象,第二次是一个对象数组。

当我的 java 类具有字段 Role[] 角色时会出现问题;并且在 json 参数角色中只是一个对象异常被抛出“预期 BEGIN_ARRAY 但是 BEGIN_OBJECT”。

谢谢你的问候

4

2 回答 2

1

您可以使用自己的 TypeAdapter 来处理单实例情况,对其进行反序列化,然后转换为数组并将其设置在字段上,使其统一。

于 2012-04-14T11:42:07.497 回答
1

这是一个有点虚假的情况——你不能指望这个库会同时为 json 正确处理两个不同的模式。但是,当我的客户使用 GSON 来使用服务时,我遇到了类似的问题,但它们是使用 Jersey 配置的。

添加 Jackson 以及正确的配置使我的服务始终服务于一个数组,这是问题的实际解决方案。有关如何修复服务的说明,请参阅此线程。

于 2012-04-14T10:56:34.620 回答