IT虾米网

JSON.parse 和 JSON.stringify详解

xmjava 2018年06月22日 编程语言 458 0

JSON.stringify(),,将value(Object,Array,String,Number...)序列化为JSON字符串;

JSON.parse(),将JSON数据解析为JS原生值。

1. stringify函数

方法JSON.stringify(value,filter,indent);
功能:返回JSON字符串
-value {type : String|Object|String|Number|Boolean|null} {explain : 传入的类型可以是列出的這些}
-filter : {type : []|{}} {explain : 过滤器可以是个数组,也可以是个函数}
-indent : {type : Number | 特殊符号} {explain : 如果是数字则代表空白符的个数,最多10个;也可以直接传入缩进的符号}
注意:JSON字符串必须使用双引号;数字可以不用引号

示范

    /**     
    方法:JSON.stringify(value,filter,indent); 
    功能:返回JSON字符串 
    -value {type : String|Object|String|Number|Boolean|null} {explain : 传入的类型可以是列出的這些} 
    -filter : {type : []|{}} {explain : 过滤器可以是个数组,也可以是个函数} 
    -indent : {type : Number | 特殊符号} {explain : 如果是数字则代表空白符的个数,最多10个;也可以直接传入缩进的符号} 
    注意:JSON字符串必须使用双引号;数字可以不用引号 
    */ 
    function testJSONStringify() { 
        // 片段一,简单示范 
        var object1 = { 
            "name":"Bill Gates", 
            "street":"Fifth Avenue New York 666", 
            "age":56, 
            "phone":"555 1234567" 
        }; 
         
        var jsonText0 = JSON.stringify(object1); 
        alert(jsonText0); 
 
        // 片段二,稍复杂示范 
        var gather = { 
            id : 1314, 
            name : 'pom', 
            infor : { 
                age : 20, 
                sex : 'man', 
                marry : false, 
                identity : 622421, 
                habit : ['篮球','台球','乒乓球','游戏',true] 
            }, 
            family : ['妈妈','爸爸','弟弟'], 
            likeGames : ['PCgame','Netgame'] 
        }; 
         
        // 第一种方式 
        var jsonText1 = JSON.stringify(gather, null, 4); 
        alert(jsonText1); 
         
        // 第二种方式,带过滤参数:只会序列化返回数组里列出的名称 
        var jsonText2 = JSON.stringify(gather,['id','family'],4); 
        alert(jsonText2); 
         
        // 第三种方式,函数实现过滤 
        var jsonText3 = JSON.stringify(gather,function(key,val){ 
            switch(key){ 
                case 'id' : 
                    return 'id is ' + val; 
                case 'family' : 
                    return val.join('@'); 
                case 'infor' : 
                    //infor的val还可以使用JSON.stringify(),如:return JSON.stringify(val,["age","sex"]); 
                    return Object.prototype.toString.call(val).slice(8, -1); 
                case 'likeGames' : 
                    //通过返回undefined删除该属性 
                    return undefined; 
                // 一定要default,以便传入的其他值能正常的返回到序列化结果中。 
                default : 
                    return val; 
            } 
        },10); 
        alert(jsonText3); 
    }

输出

2. parse函数

方法JSON.parse(val,replacer);
功能:将json字符串解析为原生的javascript值。
-val{type : String} {explain : 需要解析的json字符串}
-replacer {type : function} {explain : 和JSON.stringify()第二个参数类似,接受2个参数,key,val,不过是用来还原json串的函数}
注意:JSON字符串必须使用双引号;数字可以不用引号

示范

    /** 
    方法:JSON.parse(val,replacer); 
    功能:将json字符串解析为原生的javascript值。 
    -val{type : String} {explain : 需要解析的json字符串} 
    -replacer {type : function} {explain : 和JSON.stringify()第二个参数类似,接受2个参数,key,val,不过是用来还原json串的函数} 
    注意:JSON字符串必须使用双引号;数字可以不用引号 
    */ 
    function testJSONParse() { 
        // 代码片段一,简单示范 
        var jsonText0 = '{"name":"张三","age":23,"gender":"female","birthday":"1987-11-6"}'; 
        var userInfo = JSON.parse(jsonText0); 
        alert(userInfo.age + "|" + userInfo.birthday); 
         
        // 代码片段二,稍复杂示范 
        var obj = { 
            title : '对象的标题', 
            type : 'primitive' , 
            releaseDate : new Date(2012,03,1) // obj中的relaeseDate对象序列化之后成了有效的json串 
        }; 
        var o = JSON.stringify(obj); 
        var parsedO = JSON.parse(o,function(k,v){ 
            if(k == 'releaseDate'){ 
                return new Date(v); // 在parsedO中还原为一个Date对象 
            }else{ 
                return v; 
            } 
        }); 
        alert(parsedO.releaseDate); 
    }

输出

本文讲述的是JavaScript中JSON的两个函数,Java中JSON的使用,请参考:使用json-lib进行Java和JSON之间的转换(转)

 

本文参考:

http://handyxuefeng.blog.163.com/blog/static/4545217220123510051162/

发布评论

分享到:

IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

struts2:使用JQuery、JSON和AJAX处理请求详解
你是第一个吃螃蟹的人
发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。