$.ajax({
type: 'GET',
url: '/API/ajax/moneyall',
cache: false,
success:function(res){
console.log("json source data:",res)
var dataObj=JSON.parse(res)
console.log("JSON.parse First:",dataObj)
var json = eval('(' + dataObj + ')');
console.log("eval function Second:",json)
上面是我从服务器获取的返回,res返回的内容为下面的json格式:
json source data: "{\"code\":\"success\",\"msg\":\"成功\",\"data\":{\"avatar\":null,\"mobile\":\"1666\",\"count\":25}}"
直接使用JSON.parse返回类似下面的,看起来像是对象,但实际上还不能使用dataObj.data来获取里面的元素
JSON.parse First: {"code":"success","msg":"成功","data":{"avatar":null,"mobile":"199999
必须使用eval再转过一次才能做为json对象来使用,获取对象的元素
var json = eval('(' + dataObj + ')');
console.log("eval function Second:",json)输出:
eval function Second: {code: "success", msg: "成功", data: {…}}
上面有什么区别呢,就是第一次转的时候只是将斜杆"\"去掉,成为了键值类数组,第二次就去掉了键的引号,成了对象的字段。
当然,在第二个eval的时候也可以继续使用JSON.parse,也是可以成功的,也就是怎么都得转化两次,不和你是使用JSON.parse还是eval