Json数组操作小记 及 JSON对象和字符串之间的相互转换

时间:2022-10-26 17:53:04

[{"productid":"1","sortindex":"2"},{"productid":"2","sortindex":"3"}]

 在JSON中,有两种结构:对象和数组。

1.对象

一个对象以“{”开始,“}”结束。每个“key”后跟一“:”,“‘key/value’ 对”之间运用 “,”分隔。

packJson = {"name":"nikita", "password":"1111"}

2.数组

packJson = [{"name":"nikita", "password":"1111"}, {"name":"tony", "password":"2222"}];

数组是值的有序集合。一个数组以“[”开始,“]”结束。值之间运用 “,”分隔。

JSON字符串: 
    var str1 = '{ "name": "cxh", "sex": "man" }'; 
JSON对象: 
    var str2 = { "name": "cxh", "sex": "man" };

 

//由JSON字符串转换为JSON对象
    var obj = eval('(' + str + ')');
或者
    var obj = str.parseJSON(); //由JSON字符串转换为JSON对象
    或者
    var obj = JSON.parse(str); //由JSON字符串转换为JSON对象
    然后,就可以这样读取:
    Alert(obj.name);
    Alert(obj.sex);

//可以运用toJSONString()或者全局要领JSON.stringify()将JSON对象转化为JSON字符串。 
    例如: www.2cto.com 
    var last=obj.toJSONString(); //将JSON对象转化为JSON字符 
    或者 
    var last=JSON.stringify(obj); //将JSON对象转化为JSON字符 
    alert(last);

 

遍历JSON数组

packJson = [
{"name":"nikita", "password":"1111"},
{"name":"tony", "password":"2222"}
];
for(var i = 0; i < packJson.length; i++){
   alert(packJson[i].name + " " + packJson[i].password);
}
//targetJson 目标JSON,packJson 被组装JSON
function addGroupJson(targetJson, packJson){
    if(targetJson && packJson){
       for(var p in packJson){
           targetJson[p] = packJson[p];
       }
    }
}
var json1 = {"name":"nikita"};
var json2 = {"password":"1111"};
addGroupJson(json1, json2);
alert(json2str(json1));    //{"name":"nikita","password":"1111"}
1、数组的创建 var arrayObj = new Array(); //创建一个数组
var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值 要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。 2、数组的元素的访问 var testGetArrValue=arrayObj[1]; //获取数组的元素值
arrayObj[1]= "这是新值"; //给数组元素赋予新的值
3、数组元素的添加 arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度
arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
arrayObj.splice(insertPos,0,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。
4、数组元素的删除 arrayObj.pop(); //移除最后一个元素并返回该元素值
arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移
arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素
5、数组的截取和合并 arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组
6、数组的拷贝 arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向
arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
7、数组元素的排序 arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址
arrayObj.sort(); //对数组元素排序,返回数组地址
8、数组元素的字符串化 arrayObj.join(separator); //返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。
toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用

 

var lang = ["php","java","javascript"]; //删除 
var removed = lang.splice(1,1); alert(lang); //php,javascript 
alert(removed); //java ,返回删除的项 //插入 
var insert = lang.splice(0,0,"asp"); //从第0个位置开始插入 
alert(insert); //返回空数组 
alert(lang); //asp,php,javascript //替换 
var replace = lang.splice(1,1,"c#","ruby"); //删除一项,插入两项 
alert(lang); //asp,c#,ruby 
alert(replace); //php,返回删除的项 

 

参照博客:http://blog.csdn.net/goflyfreely/article/details/7713954

 

 

JSON对象和字符串之间的相互转换

比如我有两个变量,我要将a转换成字符串,将b转换成JSON对象:

var a={"name":"tom","sex":"","age":"24"};
var b='{"name":"Mike","sex":"女","age":"29"}';

在Firefox,chrome,opera,safari,ie9,ie8等高级浏览器直接可以用JSON对象的stringify()和parse()方法。

JSON.stringify(obj)将JSON转为字符串。

JSON.parse(string)将字符串转为JSON格式;

上面的转换可以这么写:

var a={"name":"tom","sex":"","age":"24"};
var b='{"name":"Mike","sex":"女","age":"29"}';
var aToStr=JSON.stringify(a);
var bToObj=JSON.parse(b);
alert(typeof(aToStr));  //string
alert(typeof(bToObj));//object

ie8(兼容模式),ie7和ie6没有JSON对象,不过http://www.json.org/提供了一个json.js,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法;你可以在https://github.com/douglascrockford/JSON-js上获取到这个js,一般现在用json2.js。

ie8(兼容模式),ie7和ie6可以使用eval()将字符串转为JSON对象

var c='{"name":"Mike","sex":"女","age":"29"}';
var cToObj=eval("("+c+")");
alert(typeof(cToObj));

jQuery中也有将字符串转为JSON格式的方法jQuery.parseJSON( json ),接受一个标准格式的 JSON 字符串,并返回解析后的 JavaScript (JSON)对象。当然如果有兴趣可以自己封装一个jQuery扩展,jQuery.stringifyJSON(obj)将JSON转为字符串。

参考:http://www.css88.com/archives/3919

 

Push()尾部添加 pop()尾部删除
Unshift()头部添加 shift()头部删除

 

带转义符的json解释
1.json数组:jsonData。取json数组中message的appid的值。例子:

var jsonData =  {
         "code":"200",
         "message":"{\"appid\":\"test123\",\"data\":\"PhcDgwpfphWQMzgxmum5DwMKep2QAOqCjyyf7ltwnV/091FNi2/ERnTV92r9A154Ruo+fAK7foNaZCBXSw1IRbQ6StG/X4G+OvvOLavDiA1pRD+4hId6jDO11xTnegAllvZcAsn7jpp8ye8ewtzPpM5RJvhEzoVA\",\"signkey\":\"932ffd030344f11af5fe5a626b0e6d99\",\"url\":\"http://www.baidu?id=332503\"}"
         };
var json_str = JSON.stringify(jsonData); 
var json_str2 = JSON.parse(json_str);
var msg2 = json_str2.message;
var msg3 = JSON.parse(msg2);
var msg4 = msg3.appid;
console.log(msg4);