私の目標は、Android でドキュメントの BSON 配列を逆シリアル化することです。外側の配列が匿名の場合、逆シリアル化は失敗します (への逆シリアル化を試みますCustomObject[].class
)。配列を含むキーを持つオブジェクトに配列がラップされている場合、それは機能します (へのデシリアライズWrapperObject.class
)。
JSON では、オブジェクトは次のようになります。
[{"id":....},{"id":....},{"id":....}....]
BSON 仕様によると、BSON 配列はキーの整数値を持つ通常の BSON ドキュメントです。つまり、BSON の同じオブジェクトは次のようになります。
{"0":{"id":....},"1":{"id":....},"2":{"id":....}....}
「 START_OBJECTトークンからxのインスタンスをデシリアライズできません」というエラーがスローされたときにbson4jacksonを使用して上記をデシリアライズしようとしましたが、スタックトレースで予期しないトークンが「0」であることに気付きました-配列の先頭のBSON表現.
今のところ、私の解決策は、JSON では次のようになる新しいルート オブジェクトで配列をラップすることです。
{"data":[{"id":....},{"id":....},{"id":....},....]}
bson4jackson、または Java 用の他のデシリアライゼーション ライブラリを設定して、ルート オブジェクトを配列として扱い、ラップせずにそのまま処理できますか?