Javascript Ruby解析json时抛出错误未捕获异常:399:意外令牌

Javascript Ruby解析json时抛出错误未捕获异常:399:意外令牌,javascript,ruby,json,Javascript,Ruby,Json,当我使用JSON.parse(response['data'])时,Ruby会引发错误: Uncaught exception: 399: unexpected token at ... 我不知道为什么。在casperjs中,我将以下内容回传给Ruby: this.echo('{"data": '+ JSON.stringify(resultFinal) + '}'); 我使用JSON.stringify对字符串进行编码,结果如下: {"data": "[{'Docket Type': 'M

当我使用
JSON.parse(response['data'])
时,Ruby会引发错误:

Uncaught exception: 399: unexpected token at ...
我不知道为什么。在casperjs中,我将以下内容回传给Ruby:

this.echo('{"data": '+ JSON.stringify(resultFinal) + '}');
我使用
JSON.stringify
对字符串进行编码,结果如下:

{"data": "[{'Docket Type': 'MOT - MOTION','Filing Date': '19-AUG-2015','Filing Party': 'PNC BANK, NATIONAL ASSOCIATION,','Docket Text': 'TO GRANT WRIT OF POSSESSION FOR FAILURE TO VACATE PREMISES F\\B PLT, PNC BANK'},{'Docket Type': 'AFF - AFFIDAVIT','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': 'PURSUANT TO SECTION 83.561, FLORIDA STATUTES  F\\B PLT, PNC'},{'Docket Type': '108FF - CAFF/REOPEN ($50.00)','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': '<i>none.</i>'},{'Docket Type': 'RO - REOPEN','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': '<i>none.</i>'},{'Docket Type': 'COS - CERTIFICATE OF SERVICE','Filing Date': '14-JUL-2015','Filing Party': 'NATIONAL CITY BANK,','Docket Text': 'OF ORDER ON OBJECTION TO FORECLOSURE SALE F/B PLT'},{'Docket Type': 'CRT - CERTIFICATE','Filing Date': '01-JUL-2015','Filing Party': '&nbsp;','Docket Text': 'OF DISBURSEMENTS'},{'Docket Type': 'COFT - CERTIFICATE OF TITLE','Filing Date': '01-JUL-2015','Filing Party': '&nbsp;','Docket Text': 'WAS SOLD TO PNC BANK NATIONAL ASSOCIATION'}]"}
{“数据”:“[{‘卷宗类型’:‘运动’,‘提交日期’:‘2015年8月19日’,‘提交方’:‘国家协会PNC银行’,‘卷宗文本’:‘因未能腾出PNC银行F\\B PLT的房产而授予占有令’,{'Docket Type':'AFF-宣誓书','File Date':'2015年8月19日','File Party':'','Docket Text':'根据佛罗里达州法令F\\B PLT,PNC'第83.561节,{'Docket Type':'108FF-CAFF/重新开放($50.00),'File Date':'2015年8月19日','File Party','Docket Text':'','none.},{卷宗类型:'RO-重新开放','备案日期':'2015年8月19日','备案方','卷宗文本':'none'.},{卷宗类型:'COS-服务证书','备案日期':'2015年7月14日','备案方':'NATIONAL CITY BANK','卷宗文本':'F/B PLT止赎出售异议令',{卷宗类型:'CRT-证书','备案日期':'2015年7月1日','备案方':'','卷宗文本':'支付款'},{卷宗类型:'COFT-产权证书','备案日期':'2015年7月1日','备案方','卷宗文本':'出售给PNC银行全国协会'}

正确地编码为JSON字符串,Ruby的
JSON.parse应该能够解析它。那么为什么它会失败呢?

测试JSON显示没有问题:

require 'json'

str = <<EOT
{"data": "[{'Docket Type': 'MOT - MOTION','Filing Date': '19-AUG-2015','Filing Party': 'PNC BANK, NATIONAL ASSOCIATION,','Docket Text': 'TO GRANT WRIT OF POSSESSION FOR FAILURE TO VACATE PREMISES F\\B PLT, PNC BANK'},{'Docket Type': 'AFF - AFFIDAVIT','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': 'PURSUANT TO SECTION 83.561, FLORIDA STATUTES F\\B PLT, PNC'},{'Docket Type': '108FF - CAFF/REOPEN ($50.00)','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': '<i>none.</i>'},{'Docket Type': 'RO - REOPEN','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': '<i>none.</i>'},{'Docket Type': 'COS - CERTIFICATE OF SERVICE','Filing Date': '14-JUL-2015','Filing Party': 'NATIONAL CITY BANK,','Docket Text': 'OF ORDER ON OBJECTION TO FORECLOSURE SALE F/B PLT'},{'Docket Type': 'CRT - CERTIFICATE','Filing Date': '01-JUL-2015','Filing Party': '&nbsp;','Docket Text': 'OF DISBURSEMENTS'},{'Docket Type': 'COFT - CERTIFICATE OF TITLE','Filing Date': '01-JUL-2015','Filing Party': '&nbsp;','Docket Text': 'WAS SOLD TO PNC BANK NATIONAL ASSOCIATION'}]"}
EOT

JSON[str]
# => {"data"=>
#      "[{'Docket Type': 'MOT - MOTION','Filing Date': '19-AUG-2015','Filing Party': 'PNC BANK, NATIONAL ASSOCIATION,','Docket Text': 'TO GRANT WRIT OF POSSESSION FOR FAILURE TO VACATE PREMISES FB PLT, PNC BANK'},{'Docket Type': 'AFF - AFFIDAVIT','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': 'PURSUANT TO SECTION 83.561, FLORIDA STATUTES FB PLT, PNC'},{'Docket Type': '108FF - CAFF/REOPEN ($50.00)','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': '<i>none.</i>'},{'Docket Type': 'RO - REOPEN','Filing Date': '19-AUG-2015','Filing Party': '&nbsp;','Docket Text': '<i>none.</i>'},{'Docket Type': 'COS - CERTIFICATE OF SERVICE','Filing Date': '14-JUL-2015','Filing Party': 'NATIONAL CITY BANK,','Docket Text': 'OF ORDER ON OBJECTION TO FORECLOSURE SALE F/B PLT'},{'Docket Type': 'CRT - CERTIFICATE','Filing Date': '01-JUL-2015','Filing Party': '&nbsp;','Docket Text': 'OF DISBURSEMENTS'},{'Docket Type': 'COFT - CERTIFICATE OF TITLE','Filing Date': '01-JUL-2015','Filing Party': '&nbsp;','Docket Text': 'WAS SOLD TO PNC BANK NATIONAL ASSOCIATION'}]"}
这看起来像:

{"bar":"{\"a\":\"b\"}"}
在现实生活中

然后,检索数据变得简单得多:

JSON[bar] # => {"bar"=>"{\"a\":\"b\"}"}
JSON[bar]['bar'] # => "{\"a\":\"b\"}"
JSON[bar]['bar']['a'] # => "a"

我所说的“诡计”是要多次解码的。而且,明显的缺点是“倾斜牙签”会越来越多情况正在发生,这可能会变得非常糟糕,但如果在数据传输过程中没有人干扰它们,那么如果执行了足够的解码步骤,JSON应该能够对其进行排序。

您能打印出
响应['data'的值吗
来自ruby,并向我们展示该语句的输出?@Sculper我确实在上面打印了出来。我把它放在黄色框中。反斜杠(
F\B
)导致它无效。它基本上取消了引号。您使用的是什么版本的Ruby?我可以正确解析提供的JSON,因此请显示一小段代码,以复制问题。@Donato,欢迎使用堆栈溢出。请阅读文档以了解格式问题。特别是,源代码和数据应d将被格式化为代码,通常使用四个空格的缩进。这将正确显示双斜杠。使用引号格式将“\\”显示为“\”,当人们试图复制它来帮助您时,这会让您感到困惑。您正在解析整个字符串。我正在解析str本身后尝试解析str[“data”]。解析str时会抛出错误[“data”]。是的,这是解决方案JSON[hash['data'].tr(“,”)]
{"bar":"{\"a\":\"b\"}"}
JSON[bar] # => {"bar"=>"{\"a\":\"b\"}"}
JSON[bar]['bar'] # => "{\"a\":\"b\"}"
JSON[bar]['bar']['a'] # => "a"