概述
JSON字符串和对象
let str = '{"username":"root", "password":"root"}'; // json字符串
let obj = {'username':'root', 'password':'root'} // json对象
转换
字符串 ==> 对象
- 方式1
var obj = eval('(' + str +')');
- 方式2
var obj = JSON.parse(str);
- 方式3(已不支持,需要引入json.js)
var obj = str.parseJSON();
对象 ==> 字符串
-
方式1
var back = JSON.stringify(obj);
-
方式2(已不支持,需要引入json.js)
var back2 = obj.toJSONString();
测试代码
<script type= "text/javascript">
// 注意:必须是单引号包裹双引号,否则方式2出错
// let str = "{'username':'root', 'password':'root'}" // 错误
let str = '{"username":"root", "password":"root"}';
console.log(str);
// 因为str是字符串,所以得到undefined
console.log("是否是json对象:" + str.username == 'undefinded');
console.log("===========得到json对象============");
// 方式1(常用)
let obj = eval("(" + str + ")");
console.log(obj);
// 方式2
// str = eval(str); // 如果怕传递的json字符串格式不对,可以先进行该操作,所以最好还是使用方式1
let obj1 = JSON.parse(str); // 注意,如果报错,必须检查是否是一个json字符串
console.log(obj1.username);
// 方式3(已不支持,需要引入json.js文件)
// let obj2 = str.parseJSON();
// console.log(obj2.username);
let obj3 = eval(obj); // 如果变量本身是JSON对象,多次转换得到的还是JSON对象
console.log(obj3.username);
console.log("===========得到json字符串===========");
// 方式1(常用)
var back = JSON.stringify(obj);
console.log(back);
// 方式2(不支持,需要引入json.js)
// var back2 = obj.toJSONString();
// console.log(back2);
</script>