• 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);
  • 相关阅读:
    PAIRING WORKFLOW MANAGER 1.0 WITH SHAREPOINT 2013
    Education resources from Microsoft
    upgrade to sql server 2012
    ULSViewer sharepoint 2013 log viewer
    Top 10 Most Valuable Microsoft SharePoint 2010 Books
    讨论 Setsockopt选项
    使用 Alchemy 技术编译 C 语言程序为 Flex 可调用的 SWC
    Nagle's algorithm
    Nagle算法 TCP_NODELAY和TCP_CORK
    Design issues Sending small data segments over TCP with Winsock
  • 原文地址:https://www.cnblogs.com/shy1766IT/p/5183344.html
Copyright © 2020-2023  润新知