数据返回格式有个msg对象,但是里面是字符串,好像还有换行符,如何将这个字符串转为对象呢?
换行符并不影响一个字符串转化为对象,重点是这个字符串能不能转化为对象
字符串转对象最简单的就是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的解析)
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
JSON.parse(msg) 的报错和换行符无关。
字符串
const msg = "{name: 'error', code: 1}"
使用 JSON.parse() 也会报错。原因在于 JSON 格式对象的属性,即本例中的
name
和code
必须被双引号包裹,属性值如果是字符串也需要使用双引号包裹。如下const msg = "{\"name\": \"error\", \"code\": 0}"
必须符合这种严谨的格式,JSON.parse() 才能识别。
soonfy