个人笔记,json区分后端返回数据需不需要转的问题。

JSON 与 JS 对象的关系

很多人搞不清楚 JSON 和 Js 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
如:
1
var obj = {a: 'Hello', b: 'World'}; //这是一个对象,注意键名也是可以使用引号包裹的
2
var json = '{"a": "Hello", "b": "World"}'; //这是一个 JSON 字符串,本质是一个字符串

注:一般后台返回的是js 的json对象,如像第一种形式可直接调用即可,如返回第二种 json 字符串,就需要转成json字符串 常用方法分别为 JSON.parse() 与eval()这两个api。

 

JSON.parse() 和 eval () 方法的区别

注:如果后台返回的是非标准的josn字符串 那么Json.parse()方法转换不了,(如果后台说别人都能转换为何你不能,你不是sb吗?这时候就得用到eval()这个方法,他能转换标准的字符串,也能转换非标准的字符串,如果想深入了解可以去看菜鸟教程);

非标准的JSON字符串: {error: 0, id: 1, time: 1526541587, acc: 0, ref: 0}
标准的JSON字符串: {"error": "0", "id": "1", "time": "1526541587", "acc": "0", "ref": "0"}

VM179:1 Uncaught SyntaxError: Unexpected token e in JSON at position 1
// var str = '{error: 0, id: 1, time: 1526541587, acc: 0, ref: 0}';
   var str = '{"error": "0", "id": "1", "time": "1526541587", "acc": "0", "ref": "0"}';
// var obj = JSON.parse(str);
// console.log(obj);
   var obj = eval("("+str+")"); //{error: "0", id: "1", time: "1526541587", acc: "0", ref: "0"}
   console.log(obj);

JSON 和 JS 对象互转

要实现从JSON对象转换为JS字符串,使用 JSON.parse() 来自json百度百科

其实我更觉得这一句应该为:

要实现从
JSON字符串转换为js对象,使用 JSON.parse()

1
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); //结果是 {a: 'Hello', b: 'World'}

要实现从JS对象转换为JSON
字符串,使用 JSON.parse()

2
var json = JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a": "Hello", "b": "World"}' 
原文地址:https://www.cnblogs.com/xiaobaicai123/p/10570259.html