JS之JSON

1 篇文章 0 订阅

一、Json语法可以表示为以下三种类型的值

  • 简单值(例如“Hello world”)
  • 对象
对象如下:
 var person = {
 name:"@大司马",
 age:29
};
对应的JSON表示法为:
{
 name:"@大司马",
 age:29
}
  • 数组
数组表示方式为:
var values = [25,"hi",true];
Json表示:
[25,"hi",true]

二、解析与序列化

1.JSON对象
stringfy():Javascript对象序列化为JSON字符串;
parse():JSON字符串解析成原生JavaScript

实例如下:

<script type="text/javascript">
            var book = {
                title:"Professional JavaScript",
                authors:[
                "Nicholas C. Zakas"
                ],
                edition:3,
                year:2011
            };

            var jsonText = JSON.stringify(book);
            console.log(jsonText);
            console.log(JSON.parse(jsonText));
        </script>

运行以上代码,结果如下:
这里写图片描述

2.序列化选项

除以上所述外,stringify()还可以接收另外两个参数,这两个参数用于指定以不同方式序列化JavaScript对象。

  • 过滤结果:

数组过滤:

<script type="text/javascript">
            var book = {
                title:"Professional JavaScript",
                authors:[
                "Nicholas C. Zakas"
                ],
                edition:3,
                year:2011
            };

            var jsonText = JSON.stringify(book,["title","edition"]);
            console.log(jsonText);
            //console.log(JSON.parse(jsonText));
        </script>

返回结果如下:
这里写图片描述
函数过滤:

<script type="text/javascript">
            var book = {
                title:"Professional JavaScript",
                authors:[
                "Nicholas C. Zakas"
                ],
                edition:3,
                year:2011
            };

            var jsonText = JSON.stringify(book,function(key,value){
                switch(key){
                    case "authors":
                        return value.join(",")

                    case "year":
                        return 5000;

                    case "edition":
                        return undefined;
                    default:
                        return value;
                }
            });
            console.log(jsonText);
            //console.log(JSON.parse(jsonText));
        </script>

返回结果如下:
这里写图片描述

  • 字符串缩进

    stringify的第三个参数用于控制结果中的缩进和空白符
    当该参数为数值,表示每个级别缩进的空格数(最大值为10):

<script type="text/javascript">
            var book = {
                title:"Professional JavaScript",
                authors:[
                "Nicholas C. Zakas"
                ],
                edition:3,
                year:2011
            };

            var jsonText = JSON.stringify(book,null,4);
            console.log(jsonText);
            //console.log(JSON.parse(jsonText));
        </script>

得到结果如下:
这里写图片描述

当该参数为字符串时,则表示被用做缩进的字符(不再使用空格)

<script type="text/javascript">
            var book = {
                title:"Professional JavaScript",
                authors:[
                "Nicholas C. Zakas"
                ],
                edition:3,
                year:2011
            };

            var jsonText = JSON.stringify(book,null,"--");
            console.log(jsonText);
            //console.log(JSON.parse(jsonText));
        </script>

得到结果如下:

这里写图片描述

  • 3.toJSON():
<script type="text/javascript">
            var book = {
                title:"Professional JavaScript",
                authors:[
                "Nicholas C. Zakas"
                ],
                edition:3,
                year:2011,
                toJSON:function(){
                    return this.title;
                }
            };

            var jsonText = JSON.stringify(book);
            console.log(jsonText);
            //console.log(JSON.parse(jsonText));
        </script>

得到结果如下:
这里写图片描述

3.解析选项
<script type="text/javascript">
            var book = {
                title:"Professional JavaScript",
                authors:[
                "Nicholas C. Zakas"
                ],
                edition:3,
                year:2011,
                releaseDate: new Date(2011,11,1) 
            };

            var jsonText = JSON.stringify(book);
            console.log(jsonText);
            var bookCopy = JSON.parse(jsonText,function(key,value){
                if(key == "releaseDate"){
                    return new Date(value);
                }else{
                    return value;
                }
            });
            //console.log(JSON.parse(jsonText));
        </script>

得到结果如下:
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值