JSON是一种轻量级的数据交换格式,同时,JSON是 JavaScript 原生格式,所以咱们能够直接处理它不须要依赖任何工具包或者插件。所以,好多后台都会选择返回给前端这种很是友好的数据格式。javascript
这篇文章是由刚刚开发过程当中遇到的一个小问题引起的,先重现一下问题:html
var name=$('.wrap').find('.item-name').html(); ssJson[name]=id+'_'+num+'_'+buyUsdt; // ssJson.name=id+'_'+num+'_'+buyUsdt;
这段代码,要给ssJson这个json对象,以一个变量name为键名添加一个元素进去,使用第三行代码实现不了本来想要达到的效果。由于‘.’这个操做符,在JavaScript中有着特殊意义,用在这里,它就表示对象中键名为“name”的元素,而不是取变量name的值做为键名。之因此会犯这个错误,彻底是由于本身对json操做太陌生。所以,决定总结下json操做,不足之处,请多指教!前端
目前而言,我只知道json对象在JavaScript中有两种操做方式:java
Json[prop]=value; Json.prop=value;
这两个操做方式有什么区别呢?举个例子先:json
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <script> var jsonObj={ 'one':'1', 'two':'2', 'three':'3' }; var key1='one'; console.log(jsonObj.one); console.log(jsonObj[key1]);
console.log(jsonObj[one]); </script> </body> </html>
这是输出结果:数组
因而可知,中括号里面放的应该是变量,而'.'后面,应该直接跟键名。若是键名固定的话,咱们使用两种方式均可以操做json,若是键名是变量那么咱们就只能乖乖使用中括号形式的方式来操做了。好了,这个小问题就先说到这里。下面来讲说其余json操做方法,既然吃一堑,就要长一智。O(∩_∩)O哈哈~工具
JavaScript中的json有两种表现形式,一种是单个的json对象,另外一种是json数组,就是多个json对象组成的数组,只要会处理基本的json对象,json数组也可以融会贯通了。插件
json对象:3d
var jsonObj={ 'one':'1', 'two':'2', 'three':'3' };
json数组:htm
var jsonArr = [ { 'one': '1' }, { 'two': '2' }, { 'three': '3' } ];
每一个json对象都是有键值和键名一一对应的元素组成,不管是键值仍是键名均可以操做。
json对象的遍历:
//遍历json对象 for(var key in jsonObj){ console.log(key+':'+jsonObj[key]); }
json数组的遍历:
//遍历json数组 for(var i in jsonArr){ console.log(jsonArr[i]); for(var key in jsonObj){ console.log(key+':'+jsonObj[key]); } }
结果以下:
查的话无非就是遍历,这里就不在赘述。增长和修改又极为类似,所以这里只说说删除和修改。
删除:
//删除json对象中的元素,初步思路是,找到要删除的元素,而后按照某种规则转化成字符串,删除对应串后再转回去,代码后面再补充 function deleteItem(jsonObj,key) { for(var key in jsonObj) { if(jsonObj[key] == key) { jsonObj[key] = ''; } } }
修改:
function updateItem(jsonObj,key,keyVal) { // jsonObj为要操做的json对象 // key为要操做的元素的键名 // key为要操做的元素的新值 for(var key in jsonObj) { if(jsonObj[key] == key) { jsonObj[key] = keyVal; } } }
我理解的json操做,目前大概只有这么多,欢迎你们补充!祝大家周末愉快。(*╹▽╹*)