我无法绕过如何解析此字符串。我从来没有真正使用JSON.parse
方法,觉得我无处可去。
"[{\"name\"=>\"memorial hospital\", \"number\"=>\"555-555-1212\"}, {\"name\"=>\"other name hospital\", \"number\"=>\"345-234-2342\"}, {\"name\"=>\"\", \"number\"=>\"\"}]"
答案 0 :(得分:4)
以下是可能的工作:
首先通过执行以下操作将其转换为正确的json:
s = s.gsub('=>', ':')
然后通过
解析它JSON.parse s
输出应为:
=> [{"name"=>"memorial hospital", "number"=>"555-555-1212"}, {"name"=>"other name hospital", "number"=>"345-234-2342"}, {"name"=>"", "number"=>""}]
答案 1 :(得分:2)
我认为你的字符串格式不正确。
JSON字符串不会有=>
。 The key=>value
should look like key:value
尝试以下字符串:
"[{\"name\":\"memorial hospital\", \"number\":\"555-555-1212\"}, {\"name\":\"other name hospital\", \"number\":\"345-234-2342\"}, {\"name\":\"\", \"number\":\"\"}]"
这应该有效:
require 'json'
s = "[{\"name\":\"memorial hospital\", \"number\":\"555-555-1212\"}, {\"name\":\"other name hospital\", \"number\":\"345-234-2342\"}, {\"name\":\"\", \"number\":\"\"}]"
JSON.parse s
# => [{"name"=>"memorial hospital", "number"=>"555-555-1212"}, {"name"=>"other name hospital", "number"=>"345-234-2342"}, {"name"=>"", "number"=>""}]
答案 2 :(得分:1)
如果你是json的新手,有一些很好的免费在线json解析器/验证器可以用来测试你的json ...... http://json.parser.online.fr/ http://jsonlint.com/
注意,您需要删除转义字符('\')以使这些解析器起作用。
在这种特殊情况下,您可以通过替换'=>'来修复您的json文本在你的json文本中加上':'。