首页 > 技术文章 > javascript中的json对象,json数组和json字符串的互转及取值

pdxbb 2020-05-14 16:30 原文

前言:最近在做项目的过程中涉及到修改表格的数据,由于表格中的数据是后台返回来的,点击修改,弹出编辑框修改表格中的内容,提交后发现原来加载的表格中的数据也被修改了,尝试之后,发现可以将服务器获取到的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对象的地址,修改数据时,原来的数据也就被改变了

推荐阅读