0

在控制器方面,我得到了类似的参数

"{\"violation_date\":\"sdfsdf\",\"violation_time\":\"\"},{\"violation_date\":\"sdfdsf\",\"violation_time\":\"sdfsdf\"},{\"violation_date\":\"1233\",\"violation_
time\":\"\"},{\"violation_date\":\"test\",\"violation_time\":\"time\"}"

这个类是String。我正在尝试解析这个。通过

JSON.parse(params_gotton)

得到

 JSON::ParserError (757: unexpected token at ',{"violation_date":"sdfdsf","violation_time":"sdfsdf"},{"violation_date":"1233","violation_time":""},{"violation_d
te":"test","violation_time":"time"}'):

我在这里做错了什么。有什么建议么?

4

2 回答 2

4

它不是有效的 json,这将起作用(使用 []):

require 'json'
jsn = '[{"violation_date":"sdfsdf","violation_time":""},
{"violation_date":"sdfdsf","violation_time":"sdfsdf"},
{"violation_date":"1233","violation_time":""},
{"violation_date":"test","violation_time":"time"}]'

JSON.parse(jsn) # => [{"violation_date"=>"sdfsdf", "violation_time"=>""}, {"violation_date"=>"sdfdsf", "violation_time"=>"sdfsdf"}, {"violation_date"=>"1233", "violation_time"=>""}, {"violation_date"=>"test", "violation_time"=>"time"}]

要验证 json 字符串,您可以使用: http: //www.jslint.com/。以及基本的json结构:http: //json.org/

更新

在你的情况下,试试这个:

JSON.parse('[' + params_gotton + ']')
于 2013-09-04T11:38:20.753 回答
0

好吧,收到的字符串不包含正确的 Json 结构..

首先将接收到的参数转换为适当的 json 结构,然后使用“JSON.parse(params_gotton)”对其进行解析。

在上面接收到的数据中,所有键和值都应采用键值对字符串格式。从接收到的数据中删除“\”符号。

它肯定会正常工作..

于 2013-09-04T12:10:53.100 回答