我需要JSON.parse一个名为:
的变量attr = "{
"title": "AAAAAAA",
"description": "BBBBBBB",
"body": "AAAA"BBBBB"ccccccc",
"img_url": "http: aaaaa.jpg" }"
我最终收到错误(JSON :: ParserError:757:意外令牌)。
我认为它可能来自" body"的多个引号。关键价值,但我无法找到解决这个问题的方法。
答案 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