我有一个Ruby on Rails JSON问题。
我认为这是一个奇怪的错误。我有以下JSON字符串,我从外部API
得到这样的字符串test = "[{'domain': 'abc.com'}, {'domain': 'def.com'}, {'domain': 'ghi.com'}]"
现在,我想使用以下命令将此字符串转换为哈希:
hash = JSON.parse test
问题在于错误:
JSON::ParserError: 419: unexpected token at '{'domain': 'abc.com'}, {'domain': 'def.com'}, {'domain': 'ghi.com'}]'
现在问题就是更换'用"如果任何字符串包括'是危险的或"。有人有解决方案吗?
答案 0 :(得分:6)
这很可能是因为这不是有效的JSON。将单引号更改为双引号,如下所示:
test = '[{"domain": "abc.com"}, {"domain": "def.com"}, {"domain": "ghi.com"}]'
答案 1 :(得分:3)
您收到错误,因为您的字符串不是有效的JSON。在JSON中,所有属性名称必须是双引号,并且字符串值也必须是双引号。单引号永远不会有效。
test = '[{"domain": "abc.com"}, {"domain": "def.com"}, {"domain": "ghi.com"}]'
JSON.parse(test)
# => [ { "domain" => "abc.com" },
# { "domain" => "def.com" },
# { "domain" => "ghi.com" } ]
答案 2 :(得分:0)
使用这段代码。你缺少ActiveSupport :: JSON
ActiveSupport::JSON.decode json_string
答案 3 :(得分:0)
使用Rails 4或更高版本,如果要使用符号键而不是字符串键,则可以使用 deep_symbolize_keys 方法
hash = JSON.parse(test).deep_symbolize_keys
此外,真正的问题是 MyCah 所述的无效json。