使用JSON.parse将JSON对象中的键顺序转换为Ruby哈希

使用JSON.parse将JSON对象中的键顺序转换为Ruby哈希,ruby,json,Ruby,Json,在Javascript中,对象键不按顺序排列,而在Ruby中 实际上,在将JSON对象转换为Ruby哈希时,Ruby哈希中的键的顺序似乎与在JSON数据中写入的顺序一致,例如: irb(main):002:0> JSON.parse('{"a": 1, "b": 2}') => {"a"=>1, "b"=>2} irb(main):005:0> JSON.parse('{"b": 1, "a": 2}') => {"b"=>1, "a"=>2}

在Javascript中,对象键不按顺序排列,而在Ruby中

实际上,在将JSON对象转换为Ruby哈希时,Ruby哈希中的键的顺序似乎与在JSON数据中写入的顺序一致,例如:

irb(main):002:0> JSON.parse('{"a": 1, "b": 2}')
=> {"a"=>1, "b"=>2}

irb(main):005:0> JSON.parse('{"b": 1, "a": 2}')
=> {"b"=>1, "a"=>2}
我能相信这种假设吗


我想是的,因为在解析JSON时,我猜解析器在发现密钥时会插入密钥,但我找不到任何关于该主题的引用。

根据假设,您可以。Ruby会跟踪键的顺序。

基于insert,键的顺序会保留下来,至少在Ruby的较新版本中是这样。从

散列按插入相应键的顺序枚举它们的值


(据我所知)所有当前受支持的Ruby版本都是这样(即使是不受支持的较旧的2.x版本也会像上面那样被记录在案)

文档中没有它,因此尽管它现在可以可靠地工作,但向前发展也不一定可靠。当javascript键没有排序时,为什么首先要依赖键顺序?