9 javascript JSON
来源:互联网 发布:淘宝店标logo生成器 编辑:程序博客网 时间:2024/06/05 16:19
JSON是一种数据格式,不是一种编程语言。
一.语法
json的语法可以表示以下三种类型的值:
简单值:使用与javascript相同的语法,可以在JSON中表示字符串、数值、布尔值和NULL。但JSON不支持JavaScript中的特殊值undefined
对象:对象作为一种复杂的数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以是简单值、也可以是复杂数据类型的值
数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型——简单值、对象或数组
JSON不支持变量、函数和对象实例,它就是一种表示结构化数据的格式,虽然与JavaScript中表示数据的某些语法相同,但它并不局限于JavaScript的范畴
1.简单值
最简单的JSON数据形式就是简单值。例如:
s
这是JSON表示数值5的方式。类似地,下面是JSON表示字符串的方式:
"Hello world!"
JavaScirpt字符串与JSON字符串的最大区别在于,JSON字符串必须使用双引号
2.对象
JSON中的对象与JavaScript字面量稍微有一些不同。下面是一个JavaScirpt中的对象字面量:
var person = {
name : "Nicholas",
age : 29;
};
这虽然是开发人员在JavaScirpt中创建对象字面量的标准形式,但JSON中的对象要求给属性加引号。实际上,在JavaScript中,前面的对象字面量完全可以写成下面这样:
var object = {
"name" : "Nicholas",
"age" : 29
};
JSON表示上述对象的方式如下:
{
"name" : "Nicholas",
"age" : 29
}
没有分号
{
"name" : "Nicholas",
"age" : 29,
"school" : {
"name" : "Merrimack College",
"location" : "Morth Andover, MA"
}
}
同一个对象中绝对不可以出现两个同名属性
JSON中对象的属性名任何时候都必须加双引号
3.数组
数组字面量:
[25, "hi", true]
同样注意,JSON数组没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合,例如:
[
{
"title" : "Professional JavaScript",
"authors" : [
"Nicholas C. Zakas"
],
"edition" : 3,
"year" : 2011
},
{
...
}
]
二.解析与序列化
1.JSON对象
JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScirpt对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。
var book = {
title : "Professional JavaScript",
authors : [
"Nicholas C. Zakas"
],
edition : 3,
year : 2011
};
// {"title":"Professional JavaScript", "autoors"...}
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText);
注意,虽然book与bookCopy具有相同的属性,但他们是独立的
2.序列化选项
1.过滤结果
如果过滤参数是数组,那么JSON.stringify()的结果将只包含数组中列出的属性。来看下面的例子:
var book = {
"title" : "Professional JavaScript",
"authors" : [
"Nicholas C. Zakas"
],
edition : 3,
year : 2011
};
var jsonText = JSON.stringify(book, ["title", "edition");// {"title":"Professional JavaScript","edition":3}
第二个参数还可传入函数进行过滤
2.字符串缩进
JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那它表示的是每个级别缩进的空格数
如果是一个字符串,将字符串用作缩进
会自动换行
3.toJSON()方法
为对象添加toJSON()方法,比如:
var book = {
"title" : "Professional JavaScript",
"authors" : [
"Nicholas C. Zakas"
],
edition : 3,
year : 2011,
toJSON : function(){
return this.title;
}
};
var jsonText = JSON.stringify(book);
3.解析选项
var book = {
"title" : "Professional JavaScript",
"authors" : [
"Nicholas C. Zakas"
],
edition : 3,
year : 2011,
releaseDate : new Date(2011, 1, 1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText, function(key, value){
if (key == "realeaseDate"){
return new Date(value);
}else {
return value;
}
});
alert(bookCopy.releaseDate.getFullYear();
三.总结
JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量。JSON使用JavaScript语法的子集表示对象、数组、字符串、数值、布尔值和NULL。即使XML也能表示同样复杂
的数据结果,但JSON没有那么繁琐,而且在JavaScript中使用更便利
ES5定义了一个原生的JSON对象,可以用来将对象序列化为JSON字符串或者将JSON数据解析为JavaScript对象。
一.语法
json的语法可以表示以下三种类型的值:
简单值:使用与javascript相同的语法,可以在JSON中表示字符串、数值、布尔值和NULL。但JSON不支持JavaScript中的特殊值undefined
对象:对象作为一种复杂的数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以是简单值、也可以是复杂数据类型的值
数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型——简单值、对象或数组
JSON不支持变量、函数和对象实例,它就是一种表示结构化数据的格式,虽然与JavaScript中表示数据的某些语法相同,但它并不局限于JavaScript的范畴
1.简单值
最简单的JSON数据形式就是简单值。例如:
s
这是JSON表示数值5的方式。类似地,下面是JSON表示字符串的方式:
"Hello world!"
JavaScirpt字符串与JSON字符串的最大区别在于,JSON字符串必须使用双引号
2.对象
JSON中的对象与JavaScript字面量稍微有一些不同。下面是一个JavaScirpt中的对象字面量:
var person = {
name : "Nicholas",
age : 29;
};
这虽然是开发人员在JavaScirpt中创建对象字面量的标准形式,但JSON中的对象要求给属性加引号。实际上,在JavaScript中,前面的对象字面量完全可以写成下面这样:
var object = {
"name" : "Nicholas",
"age" : 29
};
JSON表示上述对象的方式如下:
{
"name" : "Nicholas",
"age" : 29
}
没有分号
{
"name" : "Nicholas",
"age" : 29,
"school" : {
"name" : "Merrimack College",
"location" : "Morth Andover, MA"
}
}
同一个对象中绝对不可以出现两个同名属性
JSON中对象的属性名任何时候都必须加双引号
3.数组
数组字面量:
[25, "hi", true]
同样注意,JSON数组没有变量和分号。把数组和对象结合起来,可以构成更复杂的数据集合,例如:
[
{
"title" : "Professional JavaScript",
"authors" : [
"Nicholas C. Zakas"
],
"edition" : 3,
"year" : 2011
},
{
...
}
]
二.解析与序列化
1.JSON对象
JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScirpt对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。
var book = {
title : "Professional JavaScript",
authors : [
"Nicholas C. Zakas"
],
edition : 3,
year : 2011
};
// {"title":"Professional JavaScript", "autoors"...}
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText);
注意,虽然book与bookCopy具有相同的属性,但他们是独立的
2.序列化选项
1.过滤结果
如果过滤参数是数组,那么JSON.stringify()的结果将只包含数组中列出的属性。来看下面的例子:
var book = {
"title" : "Professional JavaScript",
"authors" : [
"Nicholas C. Zakas"
],
edition : 3,
year : 2011
};
var jsonText = JSON.stringify(book, ["title", "edition");// {"title":"Professional JavaScript","edition":3}
第二个参数还可传入函数进行过滤
2.字符串缩进
JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符。如果这个参数是一个数值,那它表示的是每个级别缩进的空格数
如果是一个字符串,将字符串用作缩进
会自动换行
3.toJSON()方法
为对象添加toJSON()方法,比如:
var book = {
"title" : "Professional JavaScript",
"authors" : [
"Nicholas C. Zakas"
],
edition : 3,
year : 2011,
toJSON : function(){
return this.title;
}
};
var jsonText = JSON.stringify(book);
3.解析选项
var book = {
"title" : "Professional JavaScript",
"authors" : [
"Nicholas C. Zakas"
],
edition : 3,
year : 2011,
releaseDate : new Date(2011, 1, 1)
};
var jsonText = JSON.stringify(book);
var bookCopy = JSON.parse(jsonText, function(key, value){
if (key == "realeaseDate"){
return new Date(value);
}else {
return value;
}
});
alert(bookCopy.releaseDate.getFullYear();
三.总结
JSON是一个轻量级的数据格式,可以简化表示复杂数据结构的工作量。JSON使用JavaScript语法的子集表示对象、数组、字符串、数值、布尔值和NULL。即使XML也能表示同样复杂
的数据结果,但JSON没有那么繁琐,而且在JavaScript中使用更便利
ES5定义了一个原生的JSON对象,可以用来将对象序列化为JSON字符串或者将JSON数据解析为JavaScript对象。
0 0
- 9 javascript JSON
- 【javascript】JSON
- Javascript JSON
- javascript json
- JavaScript-JSON
- JavaScript JSON
- javascript JSON
- javascript------JSON
- [Javascript] Json
- javascript---JSON
- javascript json
- JavaScript -- JSON
- javaScript JSON
- JavaScript - JSON
- JavaScript:JSON
- JavaScript JSON
- JavaScript JSON
- JavaScript JSON
- 从零开始学C++之对象的使用(二):四种对象生存期和作用域、static 用法总结
- 御泥坊的购物车单选、全选,改变数量
- 用labview实现有趣字符串 图画
- Matlab 入门级函数<一>
- ios developer tiny share-20161017
- 9 javascript JSON
- 欢迎使用CSDN-markdown编辑器
- 动态数组申请————简单版
- XML是什么,它可以做什么?——XML详解
- 快捷键XML管理和事件管理小结(实例)
- Android学习之——SpannableString和TextView的使用及研究
- Curiously Recurring Template Pattern
- calico在kubernetes中的策略
- Sugar ORM——让你不用学SQLite数据库