Rails JSON 解析出错

xiaobai2 · 2018年05月11日 · 最后由 dsh0416 回复于 2018年05月11日 · 550 次阅读
str = "{“orgs”=> [{“description”=>“<ul> \\ r \\ n <li>你在做什么?</ li> \\ r \\ n </ ul>”,“address”=>“beijing “}]}"
JSON.parse str

因为得到的str是一个json里面会有很多特殊字符,和html标签之类的东西,怎么确保和过滤类似字符(\r \n \t )保证解析不出问题呢? 或者说SON::ParserError有没有提供返回code的一个标准呢?比如哪些字符是和情况是解析不了的。这样我好跟踪错误,去解决处理这些特殊字符

共收到 5 条回复

{“orgs”=>

  1. => 不是 JSON 的格式
  2. 你上面那段是手写的么?引号都是错误的
huacnlee 回复

返回的json串好像就是错的~

easonlovewan 回复

@huacnlee @easonlovewan 情况是这样的我传给第三方一堆需要处理的json数据,然后处理完之后,我会得到一堆符合json标准的字符串。 但是有些情况返回的字符串是可以通过JSON.parse()转成ruby对象的,有些情况就会ParserError。 error的情况我想是因为返回的json字符串本身就有问题,而这些问题的原因可能是因为我传给第三方的json数据可能包含特殊字符 有些时候就会返回我上面写的那些数据" \ r \ n ",这些数据明显是不符合json标准的字符串是没法解析的 大概情况就是这样 ~

huacnlee 回复

问题是我传给第三方的的json串不知道包含了什么字符,导致会出现返回回来的解析不了

这。。。明显不是一个 JSON 字符串,引号和键值对中间的冒号都是错的。

如果要把 Ruby Object 转换成 JSON,需要 JSON.generate(object) 或者 object.to_json。直接传 object 会转成 String,但那个 String 并不是一个合法的 JSON 串。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册