JSON解析一个哈希数组的字符串

时间:2015-05-04 20:13:23

标签: ruby

我无法绕过如何解析此字符串。我从来没有真正使用JSON.parse方法,觉得我无处可去。

"[{\"name\"=>\"memorial hospital\", \"number\"=>\"555-555-1212\"}, {\"name\"=>\"other name hospital\", \"number\"=>\"345-234-2342\"}, {\"name\"=>\"\", \"number\"=>\"\"}]"

3 个答案:

答案 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文本中加上':'。