GSON:预计BEGIN_ARRAY但是BEGIN_OBJECT

时间:2012-04-14 10:48:49

标签: java json gson

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

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

谢谢你

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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