ruby中的JSON.parse错误。

时间:2014-07-31 00:48:18

标签: ruby json parsing

我需要JSON.parse一个名为:

的变量
attr = "{
           "title": "AAAAAAA",
           "description": "BBBBBBB",
           "body": "AAAA"BBBBB"ccccccc",
           "img_url": "http: aaaaa.jpg" }"

我最终收到错误(JSON :: ParserError:757:意外令牌)。

我认为它可能来自" body"的多个引号。关键价值,但我无法找到解决这个问题的方法。

3 个答案:

答案 0 :(得分:1)

我想不出用JSON.parse解析无效json字符串的方法。

该字符串来自哪里?如果它在您的控制之下,您应该使其有效。

您可以通过使用单引号'而不是双引号括起字符串并使用"转义\"来修复它:

> attr = '{
       "title": "AAAAAAA",
       "description": "BBBBBBB",
       "body": "AAAA\"BBBBB\"ccccccc",
       "img_url": "http: aaaaa.jpg" }'
> JSON.parse(attr)
# => { "title" => "AAAAAAA", "description" => "BBBBBBB", "body" => "AAAA\"BBBBB\"ccccccc", "img_url" => "http: aaaaa.jpg" }

答案 1 :(得分:0)

尝试将%Q用于多行字符串:

attr = %Q[{
       "title": "AAAAAAA",
       "description": "BBBBBBB",
       "body": "AAAA\\"BBBBB\\"ccccccc",
       "img_url": "http: aaaaa.jpg" }]

答案 2 :(得分:0)

这有效:

attr = %Q[{
       "title": "AAAAAAA",
       "description": "BBBBBBB",
       "body": "AAAA\\"BBBBB\\"ccccccc",
       "img_url": "http: aaaaa.jpg" }]

控制台测试输出:

[190] pry(main)> attr = %Q[{
[190] pry(main)*        "title": "AAAAAAA",
[190] pry(main)*        "description": "BBBBBBB",
[190] pry(main)*        "body": "AAAA\\"BBBBB\\"ccccccc",
[190] pry(main)*        "img_url": "http: aaaaa.jpg" }]
=> "{\n       \"title\": \"AAAAAAA\",\n       \"description\": \"BBBBBBB\",\n       \"body\": \"AAAA\\\"BBBBB\\\"ccccccc\",\n       \"img_url\": \"http: aaaaa.jpg\" }"
[191] pry(main)> JSON.parse attr
=> {"title"=>"AAAAAAA",
 "description"=>"BBBBBBB",
 "body"=>"AAAA\"BBBBB\"ccccccc",
 "img_url"=>"http: aaaaa.jpg"}
[197] pry(main)> puts _["body"]
AAAA"BBBBB"ccccccc
=> nil