java - GSON:预期为 BEGIN_ARRAY,但实际为 BEGIN_OBJECT

标签 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”。

谢谢您的问候

最佳答案

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

添加 Jackson 以及正确的配置使我的服务始终提供一个数组,这实际上解决了问题。请参阅this thread了解如何修复该服务。

关于java - GSON:预期为 BEGIN_ARRAY,但实际为 BEGIN_OBJECT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10153002/

相关文章:

java - 从 Json 对象中提取数组

java - 无法使用 mongodb react 测试功能端点

javascript - Json数据表传递失败

java - 如何将自定义类的 ArrayList 转换为 Java 中的 JsonArray?

JSON 字段设置为 null vs 字段不存在

mysql - 在tableview中显示从数据库下载的数据

java - 使用改造获取带有 GSON 的嵌套 JSON 对象

Java 接口(interface)扩展 Comparable

java - Spring bean 配置

java - FileChannel 与 RandomAccessFile