Rails JSON 解析出错

xiaobai2 · 2018年05月11日 · 最后由 dsh0416 回复于 2018年05月11日 · 2347 次阅读
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 的一个标准呢?比如哪些字符是和情况是解析不了的。这样我好跟踪错误,去解决处理这些特殊字符

{“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 串。

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