9. json

9. json

json格式的数据:

  1. 作用:浏览器端和服务器端发送请求传输数据,使用最多的格式

  2. 语法:属性名和属性值必须加上 “”

json格式对象和json格式字符串相互转化的问题:

  1. json格式对象–>json格式字符串: JSON.stringify(对象)

  2. json格式字符串–>json格式的对象: JSON.parse(json格式字符串)

parse: 解析

stringify: 字符串化

注意:

  1. 对象向json格式字符串转化,没有严格要求,通过stringify可以完成转化,并且给属性和属性值,都加上双引号
  2. 如果不是json格式的字符串,无法通过parse方法还原解析成对象
 var jsonStr1 = "{'name':'yuonly','age':18}";//不是json格式的字符串
//var json1 = JSON.parse(jsonStr1);// 不是json格式字符串,无法parse转化为对象
//console.log(json1, typeof json1);

var json2 = { // 不是json格式的对象
    'name':'atguigu',
    age:19
}
var jsonStr2 = JSON.stringify(json2);// 可以转化,不会报错,转化完是加""的json格式字符串
console.log(jsonStr2,typeof jsonStr2);

9-1. JSON.parse-JSON.stringify

var json1 = {

​ “name”: “atguigu”,

​ “age”: 18// 数组类型的值可以不用加""

}

​ console.log(json1, json1.name, json1.age, json1[“name”], json1[“age”]);

​ var jsonStr1 = JSON.stringify(json1);

​ console.log(jsonStr1, typeof jsonStr1);

​ var jsonStr2 = ‘{“name”:“atguigu”,“age”:18, “sex”:“男”}’;

​ var json2 = JSON.parse(jsonStr2);

​ console.log(json2,json2.name,json2[‘age’],json2.sex);

9-2. 通过json转化拷贝对象

对属性的拷贝是深拷贝。

但是不能拷贝对象中的方法

// 引用数据类型,不能通过 赋值来赋值一个新的,因为是地址的传递,操作的还是同一个堆内存
var obj1 = {
    name:'atguigu',
    age:18
}
var obj2 = obj1;
obj2.name = '尚硅谷';
console.log(obj1.name);// 尚硅谷

// 通过json转化,对对象进行拷贝,可以拷贝属性,属性也可以进行深拷贝
// 不能够拷贝方法
var obj1 = {
    name:'atguigu',
    age:18,
    address:{
        city:'北京'
    },
    say:function(){
        console.log('say');
    }
}
var obj2 = JSON.parse(JSON.stringify(obj1));
console.log('obj2: ',obj2);
obj1.name = '尚硅谷';
console.log(obj1,obj2);// 实现了对象复制

obj1.address.city = '上海';
console.log(obj1,obj2);
console.log(obj1.address === obj2.address);

9-3. JSON转化数组

可以将元素都是对象的数组,转化为JSON格式的字符串。

还可以将其还原成元素是对象的数组

var arr = [
    {
        id:1,
        title:'今天天气不错,挺风和日丽的',
        isDone:true
    },
    {
        id:2,
        title:'学习json',
        isDone:false
    }
];
var arrStr = JSON.stringify(arr);// 可以将元素是对象的数组,转化为JSON格式的字符串
console.log('arrStr: ', arrStr,typeof arrStr);// json格式的数组 - 字符串

var newArr = JSON.parse(arrStr);
console.log(newArr , newArr instanceof Array, Array.isArray(newArr));

console.log(newArr[0].title);//可以还原成数组和对象

你可能感兴趣的:(json,javascript,前端)