字符串有换行符如何转成对象

image.png
数据返回格式有个msg对象,但是里面是字符串,好像还有换行符,如何将这个字符串转为对象呢?

阅读 4.3k
3 个回答

JSON.parse(msg) 的报错和换行符无关。

字符串 const msg = "{name: 'error', code: 1}" 使用 JSON.parse() 也会报错。

原因在于 JSON 格式对象的属性,即本例中的 namecode 必须被双引号包裹,属性值如果是字符串也需要使用双引号包裹。如下
const msg = "{\"name\": \"error\", \"code\": 0}"

必须符合这种严谨的格式,JSON.parse() 才能识别。

soonfy

换行符并不影响一个字符串转化为对象,重点是这个字符串能不能转化为对象

字符串转对象最简单的就是json字符串转对象,直接使用JSON.parse就可以了,但是你这个不是json字符串,json字符串的格式是下面这样的(空格换行符等有没有无影响)

`{
↵  "data": {
↵    "url": "xxxx",
↵    "api": "xxx"
↵  }
}`

如果你不是json字符串,但是你的字符串去掉两侧的引号就是个对象,那么我们可以使用eval来转化

let objstr = "{data: {Error: 'Login'}}"
let obj = eval( '(' + objstr + ')' )

但是你这个字符串也不行,因为去掉两侧引号后,你的UserNotLogin是一个变量!!

最简单的解决办法就是改变字符串的格式,用JSON.parse解析,不然的话可以去网上找相关插件(我记得有,忘了在哪看的了)或者自己造轮子(大概思路类似AST的解析)

目测是 API 开发的同学随手拼了个“准”JSON,让他用一些库吧,比如 PHP 的 json_encode

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题