zoukankan      html  css  js  c++  java
  • Json数组操作小记 及 JSON对象和字符串之间的相互转换

    [{"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);
  • 相关阅读:
    全排列
    RazorPages中的绑定
    SQL Server安装步骤
    2020-2021---开发工作总述
    C#.NET编程的特点
    VS自带Git的使用
    从apk反编译出.java文件
    基于页面的编程模型+关于设计的表达
    XtraReport注意事项
    Android总结
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/5183344.html
Copyright © 2011-2022 走看看