我发现了 multi_json ruby gem 的这种行为:
2.1.0 :001 > require 'multi_json'
=> true
2.1.0 :002 > sym = :symbol
=> :symbol
2.1.0 :003 > sym.class
=> Symbol
2.1.0 :004 > res = MultiJson.load MultiJson.dump(sym)
=> "symbol"
2.1.0 :005 > res.class
=> String
这是存储 ruby 符号的合适方法吗? JSON 是否提供某种方法来区分 :symbol
和 "string"
?
最佳答案
答案很简单,不。大多数时候,它只对哈希值真正重要,并且哈希值上有一个作弊行为,symbolize_keys!
。底线是 JSON 不理解符号,只理解字符串。
由于您使用的是 MultiJson,因此您也可以要求 MultiJson 为您执行此操作...
MultiJson.load('{"abc":"def"}', :symbolize_keys => true)
关于ruby - 编码和解码 ruby 符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22166172/