一般遇到后台给的json数据格式不对 比如key和value都是单引号。
但真正的json 的key和value都是双引号,必须双引号才能取值。
再来一个例子看看
var test = [{
"timestamp": 1470963388.561132,
"content": "{'type': 'fee', 'fee_id': '99c0423a602711e6a021000740984a40', 'recognition_id': '99b25efe602711e6a021000740984a40'}"
},
{
"timestamp": 1470963388.357371,
"content": "{'type': 'real_time_info'}"
}
]
如果我用console.log(test[0].content)
控制台输出结果是
{'type': 'fee', 'fee_id': '99c0423a602711e6a021000740984a40', 'recognition_id': '99b25efe602711e6a021000740984a40'}
但如果我想取出type中的值呢?
我写的是console.log(JSON.parse(test[0].content).type);这个已经报错了 为什么呢,因为content里面不是json的数据,无法换成数组对象
然后用正则匹配 把content.replace(/'/g,"\"") 把content里面的key和value的单引号换成双引号。这样就可以获取type的值
感谢群里的好心人帮我解释下,
替换一般都用正则,因为 js 自带的替换只替换一个,要用正则才能全部替换。