博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSON
阅读量:6464 次
发布时间:2019-06-23

本文共 2578 字,大约阅读时间需要 8 分钟。


title: JSON

date: 2016-11-8
tags: JavaScript


0x00 JSON

JSON(JavaScript Object Notation, JavaScript对象表示法)。

JSON 利用了 JS 中的一些模式来表示结构化数据。

JSON 是一种数据格式,而不编程语言。

JSON 可以表示三种类型的值,简单值,对象数组

对于简单值,在JS中,JSON 可以表示,字符串,数值,布尔值,null,但是不支持JS 中的特殊值 undefined。

JSON 不支持变量,函数或对象实例。


使用 JSON 表示对象

//JSON 中的对象{   "name":"Jack",    "age":29,    "school":{        "name":"huaxin school",        "location":"china"    }}//JS 中的对象var object = {    "name":"Macil",    "age":29};

在 JSON 中表示对象时必须给对象的属性添加双引号。此外,没有声明变量,其次,末尾没有分号。


JSON 表示数组

JSON 中数组采用的是 JS 中数组的字面量形式。

[24,"hello",false]

同样的,JSON 中数组也没有变量好分号。

把数字和对象结合起来,便可以构成复杂的数据集合。


0x01 解析和序列化

JSON 数据结构可以被解析为有用的 JS 对象,这也是 JSON 成为 Web 服务开发中交互数据的事实标准的重要原因。

JSON 对象有两个方法: stringify()parse()

stringify():把 JS 对象序列化为 JSON 字符串

parse():把 JSON 字符串解析为原生的 JS 值


JSON.stringify()

JSON.stringify() 除了要序列化的 JS 对象外,还可以接受另外两个参数。需要添加的第二个参数是过滤器,可以是数组(数组过滤器)或者函数(函数过滤器)。第三个参数表示,是否在 JSON 字符串中保留缩进。

数组过滤器

如果过滤器参数是数组,那么 JSON.stringify() 的结果中将只包含数组中列出的属性。

var books = {    "title":"挪威的森林",    "authors":["村上春树"],    "edition":3,    "year":2011};var jsonText = JSON.stringify(books,["title","edition"]);console.log(jsonText);//{"title":"挪威的森林","edition":3}
函数过滤器

函数过滤器中的函数接受两参数:属性名属性值,而属性名只能是字符串。

函数过滤器会根据传入的键来决定返回的结果。但若是函数返回了 undefined 那么相应的属性会被忽略。

var books = {   "title":"挪威的森林",   "authors":["村上春树","芥川龙之介","松下幸之助","太宰治"],   "edition":3,   "year":2011};var jsonText = JSON.stringify(books,function(key,value){   switch(key){       case "authors":           return value.join(",");       case "year":           return 50000;       case "edition":           return undefined;       default :           return value;   }});console.log(jsonText);//{"title":"挪威的森林","authors":"村上春树,芥川龙之介,松下幸之助,太宰治","year":50000}
字符缩进

JSON.stringify() 的第上参数可以为数字或者任意字符。分别表示要缩进的空格数和用来表示的缩进字符串(不再使用空格)

var jsonText = JSON.stringify(book,null,"---");

JSON.parse()

JSON.stringigy() 方法对应,JSON.parse() 可以接受一个函数作为还原函数(reviver),它也同样接收两参数,一个键和一个值。

如果还原函数返回 undefined 则表示要在结果中删除相应的键。

在将日期对象转换为 Date 对象时,便经常使用到还原函数了。

var books = {    "title":"挪威的森林",    "authors":["村上春树","芥川龙之介","松下幸之助","太宰治"],    "edition":3,    "year":2011,    "releaseDate":new Date(2016,11,8)};var jsonText = JSON.stringify(books,function(key,value){    switch(key){        case "authors":            return value.join(",");        case "year":            return 50000;        case "edition":            return undefined;        default :            return value;    }});var bookCopy = JSON.parse(jsonText,function(key,value){    if (key == "releaseDate"){        return new Date(value);    } else {        return value;    }})

转载地址:http://zcezo.baihongyu.com/

你可能感兴趣的文章
无缝滚动实现原理分析【公告栏】
查看>>
Java Web 高性能开发
查看>>
Scala之柯里化和隐式转换
查看>>
mysql拷贝表的几种方式
查看>>
健忘的正则
查看>>
[转]CMake快速入门教程:实战
查看>>
IntelliJ IDEA创建JavaWeb工程及配置Tomcat部署
查看>>
Markdown用法
查看>>
轮播插件swiper.js?
查看>>
网路流24题总结
查看>>
15 个 Android 通用流行框架大全
查看>>
IE8兼容@media和mp4视频的解决方案
查看>>
第二周总结
查看>>
【转】知道这20个正则表达式,能让你少写1,000行代码
查看>>
自定义 启动和关闭 oracle 的命令
查看>>
Quartz
查看>>
正则表达式介绍
查看>>
初识Scala反射
查看>>
第三十九天
查看>>
Redis详解
查看>>