2012-04-14 312 views
0

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

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

谢谢你的问候

回答

1

这是一个有点bogous情况 - 你可以想到的是,库将妥善处理两个不同的模式在同一时间JSON。然而,当我的客户使用GSON来使用这些服务时,我遇到了类似的问题,但他们是使用Jersey配置的。

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

+0

感谢您的留言。问题是我没有访问此应用程序的服务器端:(。 – malinjir 2012-04-14 10:59:01

+1

嗯,也许切换到使用Jacksoon而不是GSON然后?所有这些库声明这种不一致的数组处理后,所以他们应该至少能够处理他们自己的输出。 – 2012-04-14 11:03:56

1

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

相关问题