/*
json字符串
==>是一种固定的字符串格式
==>"asdfgasdfasdfg" 普通字符串
==>'123456789123456' 数字字符串
==>'<h1>jjjjj</h1>' html格式字符串
==>json也是一种字符串的格式,和普通字符串本质没有区别
=>只是多了一些固定格式
作用
==>在电脑网络传输的过程中
==>只能传递字符串
==>传递不了对象和数组数据类型
==>如果想传递数组或者对象,需要转换成字符串格式传递
==>json格式就是满足对象和数组数据结构的一种字符串
怎么用
==>两个方法
==>JSON.parse()
=>把json格式的字符串转换成JS的数组或对象
==>JSON.stringify()
=>把JS格式的数组或者对象转换成json格式的字符串
json数据格式
1、描述数组或者对象数据类型
2、对象中的key和value都是用双引号包裹
->数字和布尔值可以不需要加引号
3、数组里面可以放多个对象
4、当多个数据的时候,最后一个数据不能有逗号(,)
5、一个json格式中,可以使用的符号,只有{},[],""和逗号(,)
6、转换json格式字符串的时候,函数会被自动过滤
语法:
1、JSON.parse()
==>语法:JSON.parse(要转换的数组或者对象)
==>返回值:JS格式的数组或者对象
2、JSON.stringify()
==>语法:JSON.stringify(要转换的数组或者对象)
==> 返回值:一个json格式的字符串
*/
//1、JSON.stringify()
var obj = {
name: "zhangsan",
age: 18,
gender: "男",
fn: function () {},
};
console.log(obj);
//定义一个对象并把其转换成json格式
var objStr = JSON.stringify(obj);
console.log(objStr);
//2、JSON.parse()
//json格式转换为对象
/* var jsonStr = '{name:"zhangsan","age":18,"gender":"男"}'; */
//报错Uncaught SyntaxError: Unexpected token n in JSON at position 1atJSON.parse (<anonymous>)
//JSON中索引位置1的出现意外的标识符n
var jsonStr = '{"name":"zhangsan","age":18,"gender":"男"}';
var obj = JSON.parse(jsonStr);
console.log(obj);
// 案例
//JSON.parse+JSON.stringify可以完全复制一份没有函数的对象
var objStr1 = {
name: "lisi",
age: 18,
gender: "男",
};
//转换过后就是一个String类型,基本数据类型
var str = JSON.stringify(objStr1);
//把基本数据类型str赋值给了parse函数的第一个参数
//得到的是一个新的对象数据结构,和objStr1没有关系
var obj1 = JSON.parse(str);
obj1.name = "wanwu";
console.log(objStr1); //{name: 'lisi', age: 18, gender: '男'}
console.log(obj1); //{name: 'wanwu', age: 18, gender: '男'}