簡體   English   中英

使用JSON.parse轉換為Ruby Hash的JSON對象中的鍵順序

[英]Order of keys in a JSON object converted to a Ruby Hash with JSON.parse

在Javascript中,對象鍵不排序,而在Ruby中, 哈希值按插入相應鍵的順序枚舉其值

實際上,在將JSON對象轉換為Ruby哈希時,Ruby Hash中的鍵似乎是按照它們在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確實會跟蹤鍵的順序。

至少在較新版本的Ruby中,基於插入保留鍵順序。 摘自Ruby 2.6.3 Hash文檔

哈希值按插入相應鍵的順序枚舉其值

(據我所知)所有當前受支持的Ruby版本都是這種情況(即使不支持的舊版2.x版本也如上所述)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM