我的目标是反序列化 Android 上的 BSON 文档数组。当外部数组是匿名的时,反序列化失败(试图反序列化为CustomObject[].class
)。当数组被包装在一个对象中时,它的键包含该数组,它可以工作(反序列化为WrapperObject.class
)。
在 JSON 中,对象看起来像这样:
[{"id":....},{"id":....},{"id":....}....]
根据BSON 规范,BSON 数组是一个常规的 BSON 文档,其中键值为整数。换句话说,BSON 中的同一个对象如下所示:
{"0":{"id":....},"1":{"id":....},"2":{"id":....}....}
我试图使用 bson4jackson 反序列化上述内容,当它抛出“无法从 START_OBJECT 令牌中反序列化x的实例”错误并且在堆栈跟踪中我注意到意外的令牌是“ 0 ” - 数组开头的 BSON 表示.
目前,我的解决方案是将数组包装在一个新的根对象中,在 JSON 中,该对象如下所示:
{"data":[{"id":....},{"id":....},{"id":....},....]}
您能否设置 bson4jackson 或任何其他用于 Java 的反序列化库,将根对象视为一个数组并按原样处理它,而不进行包装?