zoukankan      html  css  js  c++  java
  • 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);
        }

    输出

    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/

  • 相关阅读:
    关于 SAP UI5 对服务器端渲染 Server Sider Render 的支持问题
    java基础_数组_数据类型_原码反码补码_进制转换_编码_shell
    java基础_==与equals,try catch finally return ,装箱与拆箱, 字符串
    Java基础_泛型详解
    java基础_吃透Java集合系列九:HashMap
    java基础_吃透Java集合
    java基础_TCP和UDP总结及常见面试题
    java基础_由i++引发的并发问题_volatile关键词详析
    SpringBoot:SpringBoot项目的配置文件放在Jar包外加载和jar包打成exe
    对docker拉取镜像的一个知识点弥补不足
  • 原文地址:https://www.cnblogs.com/nayitian/p/3469289.html
Copyright © 2011-2022 走看看