代码之家  ›  专栏  ›  技术社区  ›  vinothini

在JSON.parse解析字符串时出现问题

  •  0
  • vinothini  · 技术社区  · 13 年前

    在控制器方面,我得到的参数如下

    "{\"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"}'):
    

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

    2 回复  |  直到 13 年前
        1
  •  4
  •   Yevgeniy Anfilofyev    13 年前

    这不是有效的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 + ']')
    
        2
  •  0
  •   Vikash Pandey    13 年前

    接收到的字符串不包含正确的Json结构。。

    首先将接收到的param转换为正确的json结构,然后使用“json.parse(params_gotton)”进行解析。

    在上述接收到的数据中,所有密钥和值都必须采用密钥-值对字符串格式。。从接收到的数据中删除“\”符号。。

    它肯定会很好用的。。

    推荐文章