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

时间:2021-05-04 03:50:40

[{"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"}
、数组的创建
var arrayObj = new Array(); //创建一个数组
var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度
var arrayObj = new Array([element0[, element1[, ...[, elementN]]]]); 创建一个数组并赋值
要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
、数组的元素的访问
var testGetArrValue=arrayObj[]; //获取数组的元素值
arrayObj[]= "这是新值"; //给数组元素赋予新的值
、数组元素的添加
arrayObj. push([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组结尾,并返回数组新长度
arrayObj.unshift([item1 [item2 [. . . [itemN ]]]]);// 将一个或多个新元素添加到数组开始,数组中的元素自动后移,返回数组新长度
arrayObj.splice(insertPos,,[item1[, item2[, . . . [,itemN]]]]);//将一个或多个新元素插入到数组的指定位置,插入位置的元素自动后移,返回""。
、数组元素的删除
arrayObj.pop(); //移除最后一个元素并返回该元素值
arrayObj.shift(); //移除最前一个元素并返回该元素值,数组中元素自动前移
arrayObj.splice(deletePos,deleteCount); //删除从指定位置deletePos开始的指定数量deleteCount的元素,数组形式返回所移除的元素
、数组的截取和合并
arrayObj.slice(start, [end]); //以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
arrayObj.concat([item1[, item2[, . . . [,itemN]]]]); //将多个数组(也可以是字符串,或者是数组和字符串的混合)连接为一个数组,返回连接好的新的数组
、数组的拷贝
arrayObj.slice(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向
、数组元素的排序
arrayObj.reverse(); //反转元素(最前的排到最后、最后的排到最前),返回数组地址
arrayObj.sort(); //对数组元素排序,返回数组地址
、数组元素的字符串化
arrayObj.join(separator); //返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。
toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用
var lang = ["php","java","javascript"];
//删除
var removed = lang.splice(,);
alert(lang); //php,javascript
alert(removed); //java ,返回删除的项
//插入
var insert = lang.splice(,,"asp"); //从第0个位置开始插入
alert(insert); //返回空数组
alert(lang); //asp,php,javascript
//替换
var replace = lang.splice(,,"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":""};
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":""};
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);