为什么不同版本的Android会以不同的方式重新排序我的JSON?

时间:2016-03-10 22:51:44

标签: android json

我有一点JSON(我用粘土做的),当它干燥并准备好用Android时它会播放... 或不玩 - 取决于版本。

我知道只保留JSON数组的顺序。但是,我所看到的是,在Lollipop(5.x)中,给定对象的子节点按照它们从JSON文件加载的顺序一致地读取但在KitKat(4.4.1)中它们出现在不同的订购,但总是在相同的顺序!!

换句话说,文件可能是

"colors":{"red":"0xFF0000", "blue":"0x0000FF", "green":"0x00FF00"}

和5.x当我抓住键()迭代器并循环它们时它们以原始顺序到达(红色,蓝色,绿色) 但在4.4.x中,它们以绿色,红色,蓝色到达。但他们每次都会以相同的顺序到达。

我真的很好奇为什么JSON解析器从一个版本的Android到另一个版本的行为会有所不同。

1 个答案:

答案 0 :(得分:2)

JSON对象,就像HashMaps一样,是关键值的东西,你不应该依赖迭代器中的键的顺序,你应该提前知道密钥然后查询与之对应的值。如果您需要特定顺序的对象,我建议使用这样的JSON数组:

"colors":[{"name":"red", "color":"0xFF0000"},{"name":"blue", "color":"0x0000FF"},...]

不同的顺序可能是由于JSON解析器在内部使用某种HashMap,其实现(哈希映射或密钥的哈希算法)因版本而异。