将 Cloudant Sync 中的 Revision 保存为有序的 LinkedHashMap,但在复制后不保留服务器数据库 (Cloudant) 中的字段顺序

Saving Revision in Cloudant Sync as an ordered LinkedHashMap, but not keeping the field's order in the server database (Cloudant), after replication

This是对Revision对象的检查,LinkedHashMap排序正确

保存后,如果我检索相同的文档,我会得到 this。

'retrieved' 对象的 'body' 字段似乎排序正确, 但是如果我把它作为一个地图,地图是无序的。

这对我来说没什么大不了的,但我注意到复制后,文档以与我在应用程序上检索到的无序地图相同的顺序保存在服务器中。

我真的想让文档在服务器上正确排序以便于阅读,这可能吗?

我 运行 我的代码是 Android 6.0,尽管如此,这个问题可能与以下 link 有关吗?

感谢您的帮助!

当您在文档对象上使用 asMap 方法时,Sync Android 会创建一个浅拷贝 Hashmap(请参阅 here)。这就是为什么从本地修订版检索到的地图没有排序的原因。

看起来很深奥,不要引用我的话,因为我已经很久没看这段代码了,asMap 是用来让 JSON 到上传,意味着使用无序映射创建上传到 Couch/Cloudant 的 JSON。 (请参阅 here,但坦率地说,在遵循了相当多的代码路径之后,这已经很深入了,所以可能不是很有用)。

我认为 Java HashMap 的排序取决于插入顺序,这可以解释为什么服务器上的顺序与本地文档对象的 asMap 结果相同。