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的更多相关文章

  1. 使用TSQL查询和更新 JSON 数据

    JSON是一个非常流行的,用于数据交换的文本数据(textual data)格式,主要用于Web和移动应用程序中.JSON 使用“键/值对”(Key:Value pair)存储数据,能够表示嵌套键值对 ...

  2. 【疯狂造轮子-iOS】JSON转Model系列之二

    [疯狂造轮子-iOS]JSON转Model系列之二 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 上一篇<[疯狂造轮子-iOS]JSON转Model系列之一> ...

  3. 【疯狂造轮子-iOS】JSON转Model系列之一

    [疯狂造轮子-iOS]JSON转Model系列之一 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 之前一直看别人的源码,虽然对自己提升比较大,但毕竟不是自己写的,很容易遗 ...

  4. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  5. .NET Core系列 : 2 、project.json 这葫芦里卖的什么药

    .NET Core系列 : 1..NET Core 环境搭建和命令行CLI入门 介绍了.NET Core环境,本文介绍.NET Core中最重要的一个配置文件project.json的相关内容.我们可 ...

  6. 一个粗心的Bug,JSON格式不规范导致AJAX错误

    一.事件回放  今天工作时碰到了一个奇怪的问题,这个问题很早很早以前也碰到过,不过没想到过这么久了竟然又栽在这里. 当时正在联调一个项目,由于后端没有提供数据接口,于是我直接本地建立了一个 json ...

  7. JSON.parse()和JSON.stringify()

    1.parse 用于从一个字符串中解析出json 对象.例如 var str='{"name":"cpf","age":"23&q ...

  8. json与JavaScript对象互换

    1,json字符串转化为JavaScript对象: 方法:JSON.parse(string) eg:var account = '{"name":"jaytan&quo ...

  9. .NET平台开源项目速览(18)C#平台JSON实体类生成器JSON C# Class Generator

    去年,我在一篇文章用原始方法解析复杂字符串,json一定要用JsonMapper么?中介绍了简单的JSON解析的问题,那种方法在当时的环境是非常方便的,因为不需要生成实体类,结构很容易解析.但随着业务 ...

  10. WebApi接口 - 响应输出xml和json

    格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...

随机推荐

  1. Java微信公众号开发-外网映射工具配置

    一.开发环境准备 1.一个微信公众号 2.外网映射工具(开发调试)如花生壳.ngrok工具 注:与微信对接的URL要具备以下条件a:在公网上能够访问 b:端口只支持80端口 这里使用ngrok.cc: ...

  2. Dubbo系列(1)_背景介绍和基本情况

    一.本文目的         主要介绍Dubbo的产生背景和需要解决的问题 二.产生背景         随着大数据量.高并发的互联网应用越来越多,单机系统已经无法满足系统的需要.通过SOA搭建一个分 ...

  3. chrome 26.0.XXX版本下media query流媒体查询有问题的bug

    这段代码什么意思: @media only screen and (max-width: 1360px)  当用户的界面小于等于1360px的时候, 会加载该流媒体样式(此时的界面是包含滚动条的): ...

  4. 区间DP HDU 4283

    t个数据 n个权值 1->n 可以入栈调整顺序 花费 第k个出来 w[i]*(k-1); 求花费最少 #include<stdio.h> #include<string.h&g ...

  5. 用C#制作推箱子小游戏

    思路分析: 一.制作一个地图 二.地图中放置墙.箱子.人.目标等 三.让小人动起来完成推箱子动作 游戏制作: 1.按照上述地图制作一个地图  (12行×13列) 地图可以看做是行和列组成的,即可以看做 ...

  6. C# JSon转换

    1. 先添加System.Web.Extensions.dll引用   var js = new System.Web.Script.Serialization.JavaScriptSerialize ...

  7. Oracle触发器实例(网搜)

    触发器使用教程和命名规范 目  录触发器使用教程和命名规范 11,触发器简介 12,触发器示例 23,触发器语法和功能 34,例一:行级触发器之一 45,例二:行级触发器之二 46,例三:INSTEA ...

  8. [bzoj1009][HNOI2008]GT考试

    Description 阿申准备报名参加考试,准考证号为位数,他不希望准考证号上出现不吉利的数字. 他的不吉利数学有位,不出现是指中没有恰好一段等于. 可以为. Input 第一行输入.接下来一行输入 ...

  9. BZOJ4423 [AMPPZ2013]Bytehattan

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  10. Codeforces Round #389 Div.2 B. Santa Claus and Keyboard Check

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...