我正在使用Oj gem将JSON字符串解码为Ruby对象。当我有一个编码字符串,如下例所示,它按预期解码:
require "oj"
Oj.load("\"a\"") # => "a"
但是当原始字符串以冒号开头时,解码过程会将其转换为符号:
Oj.load("\":a\"") # => :a
在这种情况下,我希望得到一个字符串":a"
。是否有其他情况,Oj gem将字符串转换为其他内容?如何避免将字符串转换为其他对象的情况?
答案 0 :(得分:2)
Oj不是strict mode by default,这意味着它将任何内容转换为Ruby等价物。
您可以通过default_options
哈希
Oj.default_options[:mode] = :strict
否则使用Oj.strict_load("\":a\"")
将生成字符串:a