在我的rails数据库中,我有一个对象,其文本字段是有效的json:
<div class="btn btn-default" (click)="addRow(someArray, someObject)"></div>
如果我在ruby中的字段上调用JSON.parse,则会出错:
"\"AACAY, AAOI, AAON, AATI, ABAX,ZYXI\""
但是,如果我在浏览器中的相同字符串上调用JSON.parse,它就可以工作。
为什么ruby调用失败?
答案 0 :(得分:2)
对于嵌套在JSON字符串中的字符串,我遇到与JSON.parse相同的问题。我的解决方案是用YAML逃避JSON::ParserError
。
YAML.load("\"AACAY, AAOI, AAON, AATI, ABAX,ZYXI\"")
=> "AACAY, AAOI, AAON, AATI, ABAX,ZYXI"
谨防陷阱。见this SO thread
答案 1 :(得分:0)
它是JSON解析器中的一个错误,自json gem v2.0起修复。
# json_parser_test.rb
require 'json'
puts JSON.parse("\"AACAY, AAOI, AAON, AATI, ABAX,ZYXI\"")
maxcal@MaxBook ~/p/s/tmp> gem list json
*** LOCAL GEMS ***
json (1.8.3)
json-schema (2.7.0)
jsonapi (0.1.1.beta6)
jsonapi-parser (0.1.1.beta3)
jsonapi-renderer (0.1.1.beta1)
multi_json (1.12.1, 1.11.2)
maxcal@MaxBook ~/p/s/tmp> ruby json_parser_test.rb
/Users/maxcal/.rbenv/versions/2.3.1/lib/ruby/2.3.0/json/common.rb:156:in `parse': 784: unexpected token at '"AACAY, AAOI, AAON, AATI, ABAX,ZYXI"' (JSON::ParserError)
from /Users/maxcal/.rbenv/versions/2.3.1/lib/ruby/2.3.0/json/common.rb:156:in `parse'
from json_parser_test.rb:2:in `<main>'
升级JSON gem会导致解析器错误消失:
maxcal@MaxBook ~/p/s/tmp> gem install json -v 2.0
Fetching: json-2.0.0.gem (100%)
Building native extensions. This could take a while...
Successfully installed json-2.0.0
Building YARD (yri) index for json-2.0.0...
Done installing documentation for json after 2 seconds
1 gem installed
maxcal@MaxBook ~/p/s/tmp> ruby json_parser_test.rb
AACAY, AAOI, AAON, AATI, ABAX,ZYXI
答案 2 :(得分:0)
JSON.parse()不适用于所有字符串格式。 字符串需要具有以下格式。 &#34; {\&#34; AACAY \&#34;:\&#34; AAOI \&#34;,\&#34; AAON \&#34;:\&#34; AATI \&# 34;,\&#34; ABAX \&#34;:\&#34; ZYXI \&#34;}&#34; 其中包含字符串化对象。