js020-JSON
js020-JSON
20.1 语法
JSON的语法可以表示为一下三种类型的值。
简单值 |
使用与JS相同的语法,可以在JSON中表示字符串、数值、布尔值和null,但是JSON不支持JS中的特殊性Undefined |
对象 |
对象作为一种复杂数据类型, 表示一组无序的键值对。每个键值对中的值可以是简单值,也可以是复杂数据类型值。 |
数组 |
一种复杂数据类型,表示一组有序的值的列表,可以通过数值 |
1、简单值
最简单的JSON数据形式。例如:
5 |
JSON 表示数值5的方式 |
“Hello word” |
JSON 表示字符串的方式 |
JSON字符串必须使用双引号(单引号会导致语法错误)
2、对象
JS对象字面量 |
JS对象字面量另一种写法 |
JSON表示的上述对象的方式 |
var person = { name:"meimei"; age:18; }; |
var person = { "name":"meimei"; "age":18; }; |
{ "name":"meimei", "age":18 } |
JSON对象没有变量和分号
3、数组
JS对象字面量 |
JSON表示的上述对象的方式 |
var values = [25, 'hi', true]; |
[25, 'hi', true] |
JSON数组没有变量和分号
20.2 解析与系列化
20.2.1 JSON对象
可以把JSON数据结构解析为有用的JS对象。
JSON对象有两个方法:
stringify() |
把JS对象序列化为JSON字符串。在序列化JS对象是,所有函数原型成员都会被有意忽略,不体现在结果中,值为Undefined的任何属性也会被跳过。结果最终都是值为有效的JSON数据类型的实力属性。 |
parse() |
把JSON字符串解析为原生的JS值。将JSON字符串直接传递给JSON. parse()就可以得到相应的JS值,如下:创建与book类似的对象: var bookcopy = JSON.parse(jsonText); |
20.2.2序列化选项
JSON. stringify()可接收两个参数:1、过滤器或者数组或者函数;2、选项:表示是否在JSON字符串中保留缩进。
使用这两个参数可以指定不同方式序列化JS对象。
一、过滤结果
二、字符串缩进
JSON. stringify()的三个参数用于控制结果中的缩进和空白符。
参数类型的含义:
数值 |
非数值(字符串) |
表示的每个级别缩进的空格数,可以通过有效的参数控制换行符。最大缩进空格为10,所有大于10的值都会自动转换为10. |
将该字符串作为缩进字符,(例如:制表符:“—”) |
三、toJSON()方法
可以为任何对象添加toJSON()方法。
toJSON()方法可以作为函数过滤器的补充,假设把一个对象传入就JSON.stringify(),序列化该对象的顺序如下:
1、如果存在toJSON()方法而且能通过它取得有效的值,则调用该方法,否则返回对象本身。
2、如果提供第二个参数,应用这二个函数过滤器,传入函数过滤器的值是第(1)步返回的值;
3、对第(2)步返回的每个值进行相应的序列化;
4、如果提供第三个参数,指向相应的格式化。
20.2.3解析选项
JSON.parse()方法可接收另一个参数:函数(将在每个键值对上调用)。为了区分JSON.stringify()接收的替换函数,这个函数成为还原函数(实际上这另个函数的签名是相同的,它们都接收两个参数:一个键和一个值,且都返回一个值)
如果还原函数返回一个Undefined值,表示要从结果中删除相应的键,返回其他值,则将该值插入到结果中。
声明:该博客由http://www.cnblogs.com/lal-fighting/原创发表,未经作者允许,不得私自转载抄袭!!!
js020-JSON的更多相关文章
- 使用TSQL查询和更新 JSON 数据
JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...
- 【疯狂造轮子-iOS】JSON转Model系列之二
[疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...
- 【疯狂造轮子-iOS】JSON转Model系列之一
[疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...
- Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)
背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...
- .NET Core系列 : 2 、project.json 这葫芦里卖的什么药
.NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...
- 一个粗心的Bug,JSON格式不规范导致AJAX错误
一.事件回放 今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...
- JSON.parse()和JSON.stringify()
1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf","age":"23&q ...
- json与JavaScript对象互换
1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...
- .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator
去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...
- WebApi接口 - 响应输出xml和json
格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...
随机推荐
- C 语言学习的第 01 课:先来聊聊计算机吧
各位同学,新学期,我就是你们的助教了.我的个人信息,你们的任课老师都已经介绍过了,所以我这里也就不再啰嗦.下面,来聊聊今天的话题:“先来谈谈计算机吧”. 想必看到这个题目,你们大家一定是不愿意点击进来 ...
- [转]搞ACM的你伤不起(转自Roba大神)
劳资六年前开始搞ACM啊!!!!!!!!!! 从此踏上了尼玛不归路啊!!!!!!!!!!!! 谁特么跟劳资讲算法是程序设计的核心啊!!!!!! 尼玛除了面试题就没见过用算法的地方啊!!!!!! 谁再跟 ...
- Rectangles Area Sum
#include<iostream> #include<stdio.h> #include<math.h> #include<string.h> #in ...
- mybatis Generator配置文件详解
这里按照配置的顺序对配置逐个讲解,更细的内容可以配合中文文档参照. 1. 配置文件头 <?xml version="1.0" encoding="UTF-8&quo ...
- java之自定义回调接口
本质上为:传递不同的实现的接口实例,执行不同的程序,即有扩展性. 在一个方法中,可以实现一个对象中的接口,实例化该接口,即可完成对不同对象的不同回掉. 在原有类中,调用接口中的方法,根据不同的接口实例 ...
- oracle修改表字段
--添加字段 )); -- 修改字段的长度- ));
- MVVM: 通过 x:Bind 实现 MVVM(不用 Command)
背水一战 Windows 10 之 MVVM(Model-View-ViewModel) 通过 x:Bind 实现 MVVM(不用 Command) 示例1.ModelMVVM/Model/Produ ...
- 学习WebSocket(二):使用Spring WebSocket做一个简单聊天室
聊天室高频率.低延时完全符合websocket的特点,所以聊天室使用websocket再适合不过了. 聊天室的功能并没有比上一节代码多多少,主要在握手阶段对用户的session做处理,对用户的消息进行 ...
- springmvc使用RSA算法加密表单
今天被吐槽在客户端用js对密码进行md5加密其实也不见得安全.这种做法其实不见得有什么作用,学过计算机网络都知道,在网上抓一个包是很简单的事,就算别人抓包抓不到你原始密码,用这个md5后的密码一样可以 ...
- js-JavaScript高级程序设计学习笔记8
第十三章 事件 1.DOM2级事件规定的事件流包括三个阶段:事件捕获阶段.处于目标阶段.事件冒泡阶段. 2.大部分浏览器都会在捕获阶段出发对象上的事件,结果就是,有两个机会在目标对象上面操作事件. 3 ...