2016-05-30 8 views
0

これはバグか、変換時にネストされたハッシュの整数キーを処理する方法を指定するオプションがない場合はわかりませんレールを使用してJSONにActiveSupport::JSON.encodeあなたが見ることができるように問題どのようにActiveSupport :: JSON.encodeがネストされたハッシュ整数キーを処理するかを指定します

$ rails console 
[deprecated] I18n.enforce_available_locales will default to true in the future. If you really want to skip validation of your locale you can set I18n.enforce_available_locales = false to avoid this message. 
Loading development environment (Rails 3.2.22.1) 

Frame number: 0/5 
[1] pry(main)> ActiveSupport::JSON.encode({outer: {1 => "a"}}) 
=> "{\"outer\":{\"1\":\"a\"}}" 

の例は、内部ハッシュキー1は、文字列に変換されています。私は未知のクラス/型とActiveRecord特有のもの(例えば:includeとの結合を許可するようなもの)を扱う方法を指定するための様々なオプションがあることを知っていますが、 'ネイティブ'型の整数は、そのネストはデフォルトで処理されます。

答えて

0

In JSON, the “keys” must always be strings

=> a = { 1 => "1" } 
#> {1=>"1"} 
=> a.to_json 
#> "{\"1\":\"1\"}" 
=> JSON.parse(a.to_json) 
#> {"1"=>"1"} 
+0

これはわかりませんでした。整数キーはJavascriptのObjectに対して有効なので、JSONで有効であると思っていたでしょう。 – sirlark

関連する問題