我不确定这是一个错误,还是我在使用rails ActiveSupport::JSON.encode
转换为JSON时缺少指定如何处理嵌套哈希的整数键的选项。问题的例子
$ 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
的连接),但我会认为这是一个整数作为“本地”#39;类型不需要那种东西,默认情况下会处理嵌套。
答案 0 :(得分: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"}