JSON.parse 和 JSON.stringify

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);

    }

输出

JSON.parse 和 JSON.stringify

JSON.parse 和 JSON.stringify

JSON.parse 和 JSON.stringify

JSON.parse 和 JSON.stringify

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);

    }

输出

JSON.parse 和 JSON.stringify

JSON.parse 和 JSON.stringify

JSON.parse 和 JSON.stringify

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

 

本文参考:

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

你可能感兴趣的:(stringify)