Oj的JSON解码将字符串转换为其他对象

时间:2014-06-30 15:28:28

标签: ruby json string symbols

我正在使用Oj gem将JSON字符串解码为Ruby对象。当我有一个编码字符串,如下例所示,它按预期解码:

require "oj"
Oj.load("\"a\"") # => "a"

但是当原始字符串以冒号开头时,解码过程会将其转换为符号:

Oj.load("\":a\"") # => :a

在这种情况下,我希望得到一个字符串":a"。是否有其他情况,Oj gem将字符串转换为其他内容?如何避免将字符串转换为其他对象的情况?

1 个答案:

答案 0 :(得分:2)

Oj不是strict mode by default,这意味着它将任何内容转换为Ruby等价物。 您可以通过default_options哈希

进行设置
Oj.default_options[:mode] = :strict

否则使用Oj.strict_load("\":a\"")将生成字符串:a