前言:最近在做项目的过程中涉及到修改表格的数据,由于表格中的数据是后台返回来的,点击修改,弹出编辑框修改表格中的内容,提交后发现原来加载的表格中的数据也被修改了,尝试之后,发现可以将服务器获取到的json对象转成json字符串,然后再转成json对象;这样再修改数据时,原数据就不会被修改了,最后再将修改后的数据发给服务器
这里将json对象,json数组和json字符串以及它们之间的互转总结下,方便日后查阅
一、JSON对象
var json = { "name": "小明", "sex": "man","age":"23" };
取值:console.log(json.name); //小明
二、JSON字符串
var jsonString = '{ "name": "小明", "sex": "man","age":"23" }'; //注意{}外面的引号 取值:console.log(jsonString ); // '{ "name": "小明", "sex": "man","age":"23" }' 直接取到整个,因为他是字符串
三、JSON数组
var jsonArray:[ { "name": "小明", "sex": "man","age":"23" }, { "name": "小蕾", "sex": "female","age":"12" } ] //遍历json数字 for(var i = 0; i < jsonArray.length; i++){ console.log(jsonArray[i].name); }
四、转换
1)JSON.parse函数:将字符串转换为JSON对象
JSON. parse(text[,reviver]).
参数:text 必须;一个有效的json字符串。
返回值:一个对象或数组。
2)JSON.stringify():将JSON对象转换为JSON字符串
JSON.stringify(value [, replacer] [, space])
参数:value 必须;通常为对象或数组。
replacer 可选,用于转换结果的函数或者数组。
space 可选。向返回值 JSON 文本添加缩进、空格和换行符以使其更易于读取。
返回值:包含json对象或数组的字符串。
我们通常用JSON.parse(JSON.stringify(data));来进行深拷贝;它的原理是:对象本身存储的是一个地址;将对象转换为字符串,也就是将对象序列化为字符串的形式再保存在磁盘上,指向了一个新的地址,然后再用JSON.parse()反序列化,来实现深拷贝。
如果我们在修改数据时,直接对原来的对象(数据)进行修改,那么指向的就是原先json对象的地址,修改数据时,原来的数据也就被改变了