JSON 基础知识总结
JSON:JavaScript 对象表示法(JavaScript Object Notation)
JSON 语法规则
数据在名称/值对中
数据由逗号分隔
花括号保存对象
方括号保存数组
JSON有6种类型的值:
对象、数组、字符串、数字、布尔值、null
JSON对象是一个容纳“名/值”对的无序集合
名字:任意字符串
值:任意类型的JSON值,包括数组和对象(对象中可以嵌入对象)
注:JSON字符串必须使用双引号(单引号会报错)
一、对象
javascript中创建字面量:
var object = {
name:"lily",
age:22
};
或者:
var object = {
"name":"lily",
"age":22
};
JSON:
{
"name":"lily",
"age":22
}
二、数组
JSON数组采用的是javascript中数组字面量形式
例如,JSON中 :
[ "lily",25,"docter"]
同样要注意, JSON 数组也没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合。
扩展:
把数组和对象结合起来可以构成更复杂的数据结合
例如:
[
{
"name":"lily",
"age":22,
"job":"docter"
},
{
"name":"nicy",
"age":21,
"job":"teacher"
},
{
"name":"lily",
"age":22,
"job":"AE"
}
]
三、解析与序列化
JSON拥有和javascript类似的语法,可以把JSON数据结构解析为有用的javascript对象
1.JSON对象
收发JSON数据
读取、写入、发送和接收JSON数据对象时,需要转换成字符串,并能从字符串转换为JSON数据对象。(用于javascript相同的方式读写他们)
JSON对象有两个方法:
① stringify(): 把javascript对象序列化为JSON字符串
② parse(): 把JSON字符串解析为原生的javascript值
实例:
var book = {
title:"professional JavaScript",
authors:[
"lily"
],
edition:3,
year:2011
};
var jsonText = JSON.stringify(book);
alert(jsonText); //{"title":"professional JavaScript","authors":["lily"],"edition":3,"year":2011}
alert(typeof jsonText); //string
var bookCopy = JSON.parse(jsonText);
alert(typeof bookCopy); //object
这个例子中使用JSON.stringify()把一个javascript对象book序列化为一个JSON字符串,然后保存到jsonText中;将JSON字符串jsonText直接传给JSON.parse()就得到了相应的javascript值
注:序列化javascript对象时,最终值都是有效JSON数据类型的实例属性,任何无效的值都会被跳过
2.序列化选项
JSON.stringify()在序列化javascript对象时,可以接收两个参数
参数一:过滤器,可以是一个数组或函数
参数二:一个选项,表示是否在JSON字符串中保留缩进
1)过滤结果
如果过滤器的参数是数组,那么JSON.stringify()的结果中只包含数组中列出的属性
例如:
var book = {
"title":"professional JavaScript",
"authors":[
"lily"
],
edition:3,
year:2011
};
var jsonText = JSON.stringify(book,["title","edition"]);
alert(jsonText); //{"title":"professional JavaScript","edition":3}
alert(typeof jsonText); // string
2)字符串缩进:
JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符
3)toJSON()方法
给对象定义toJSON()方法,可以返回其自身的JSON数据格式
四、JSON访问值
第一种:简单数组
['item1','item2','item3']
取值:通过数字索引访问嵌入的值(第一项的索引为0)
['item1','item2','item3'] var items = ['item1','item2','item3']; alert(items[0]); // item1
第二种:使用{}表示对象
{ "key":"value" }
取值:通过键名访问嵌入的值
var oExample = { "name":"lily" };
alert(oExample.name); // lily
alert(oExample["name"]); // lily
使用这两种方式,可以用子记录(带命名的或数值的索引键)描述很多数据结构:
例如:
var oNovelist = {
"firstName":"lily",
"lastName":"russ",
"novels":
[
{
"title":"and choas died",
"year":"1970"
},
{
"title":"the famale man",
"year":"1976"
}
]
};
var msg = oNovelist.firstName+" "+oNovelist.lastName+"'s"+" "+oNovelist.novels[0].title+" "+"was published in"+oNovelist.novels[0].year;
alert(msg); // lily russ's and choas died was published in1970
JSON 基础知识总结的更多相关文章
- JSON基础知识总结
JSON基础 一.JSON简介 JSON,全称“JavaScript Object Notation(JavaScript对象表示法)”,起源于JavaScript的对象和数组.JSON,说白了就是J ...
- 使用Jquery解析Json基础知识
前言 在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. ...
- 使用Jquery解析Json基础知识(转)
在WEB数据传输过程中,json是以文本,即字符串的轻量级形式传递的,而客户端一般用JS操作的是接收到的JSON对象,所以,JSON对象和JSON字符串之间的相互转换.JSON数据的解析是关键. 先明 ...
- JSON基础知识
1.什么是json • JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) • JSON 是轻量级的文本数据交换格式 ...
- golang基础知识之encoding/json package
golang基础知识之json 简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式.可以去json.org 查看json标准的清晰定义.json pack ...
- [BS-12] JSON的基础知识--百科
JSON的基础知识--百科 http://baike.baidu.com/view/136475.htm
- .NET面试题系列[1] - .NET框架基础知识(1)
很明显,CLS是CTS的一个子集,而且是最小的子集. - 张子阳 .NET框架基础知识(1) 参考资料: http://www.tracefact.net/CLR-and-Framework/DotN ...
- IOS开发基础知识碎片-导航
1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...
- 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库
1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...
随机推荐
- DS实验题 order
算法与数据结构 实验题 6.4 order ★实验任务 给出一棵二叉树的中序遍历和每个节点的父节点,求这棵二叉树的先序和后序遍历. ★数据输入 输入第一行为一个正整数n表示二叉树的节点数目,节点编号从 ...
- jpush极光推送知识点总结
1.jpushClient.sendPush(pushpayLoad):是发送推送的主要方法 2.pushpayload是具体推送消息.推送对象范围的封装 3.jpushClient.sendPush ...
- 必应(Bing)每日图片获取API
必应(Bing)每日图片获取API January 11, 2015 API http://lab.dobyi.com/api/bing.php 介绍 Value Description title ...
- Redis安装及初步使用
一.Centos下安装Redis1.wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm2.rp ...
- 医生加号页改版,就一个Bug, 看医生工作台一期需求
8/8日报 分级埋点: [MobClick event:UmengPagePlusDoctor attributes:@{@"page":@"plusPage&q ...
- file_get_contents无法获取数据的一种情况
下面这段php代码突然不好使了,返回的 $html 为空,百思不得解.网上说法好多,但都是一家之言,解决不了我的问题.(我的解决方法也是一家之言,只能解决file_get_contents获取不到数据 ...
- PHP5 mysqli 教程
mysqli提供了面向对象和面向过程两种方式来与数据库交互,分别看一下这两种方式. 1.面向对象 在面向对象的方式中,mysqli被封装成一个类,它的构造方法如下: __construct ([ st ...
- Ngrok 内网穿透利器
Ngrok是什么 Ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道.Ngrok 可捕获和分析所有通道上的流量,便于后期分析和重放 为什么要使用Ngrok ...
- Mschat控件示例升级错误处理方法
将具有 3.5 版图表控件的 ASP.NET 3.5 网站升级到 ASP.NET 4 需要更改 web.config 和注册指令 将具有 3.5 版图表控件的 ASP.NET 3.5 网站升级到 AS ...
- 公共POI导出Excel方法--java
最早开始的时候做过一些数据Excel导出的功能,但是到后期每一次导出都需要写一些差不多类似的代码,稍微研究了一下写了个公共的导出方法. 这里用的是POI,然后写成了一个公共类,传入设置好格式的数据,就 ...