JSON是一种数据格式,而不是一种变成语言。它并不从属于javascript,而且并不是只有js才使用JSON。很多语言都有针对JSON的解析器和序列化器。
语法
JSON语法可以表示以下三种类型的值:
1、简单值:使用与js相同的语法,可以再json中表示字符串、数值、布尔值、和null,但是不能表示undefined;
2、对象:对象作为一种复杂的数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以简单值,也可以是复杂数据类型的值;
3、数组:数组时一种复杂的数据类型,表示一组有序的值的列表,可以通过索引来访问其中的值。数组的值也可以是任意类型——简单值、对象、数组。
json不支持变量、函数或对象实例。
1 简单值
最简单的json数据形式就是简单值。
eg: ‘hello world’
2 对象
对象字面量:
var book = {
title:1,
edition:2
};JSON中要求给属性加引号:
var book = {
‘title’:1,
‘edition’:2
};JSON表示上述对象的方式如下:
{
‘title’:1,
‘edition’:2
};
3 数组
数组字面量:var value = ['12','21','3']在JSON中表示为:
['12','21','3']在JSON中没有变量和分号。把数组和对象结合起来可以构成更复杂的数据集合。
[
{
"title": "coder",
"time": "2007",
"author": [
"Niks C. Zz"
]
},
{
"title":"edtior",
"time":"2004",
"author":[
"Miks C. Ad"
]
}
]解析和序列化
早期的JSON解析基本就是使用eval()函数。
1 JSON对象
json对象有两个方法:stringify和parse。
分别用于把javascript对象序列化为json字符串和把json字符串解析为原生的javascript值。
var book = {
title:1,
edition:2
};
var os = JSON.stringify(book);/*将js序列化json字符串*/
console.log (os);
var os1 =JSON.parse(os);/*将json字符串解析成原生js值*/
/*如果传给JSON.parse的字符串不是有效的json,该方法会抛出错误*/
console.log(os1);打印出:
{"title":1,"edition":2}
2 序列化对象
stringify()除了要序列化js对象外,还可以接受另外两个参数,一个参数是个过滤器,可以是一个数组也可以是一个函数,第二个参数是一个选项,表示是否在json字符串中保留缩进。var book = {
title:"professional javascript",
edition:2,
author:["Nike A Tang"],
year:2011
};
/*过滤结果*/
var jsonText = JSON.stringify(book,["title","edition"]);
console.log(jsonText);打印结果:
{"title":"professional javascript","edition":2}如果函数返回了undefined,那么相应的属性会被忽略。
stringify还可以接受第三个参数。其作用时控制结果中的缩进和空白符。如果这个参数是一个数值,便是的是每个级别缩进的空格数。
var json1 =JSON.stringify(book,null,4);如果是一个字符串,那么在json 字符串中将被用作缩进字符。
var json2 =JSON.stringify(book,null,"--");3 解析选项
parse函数也可以接受另一个参数,该参数是一个函数,将在每个键值对儿上调用。为了区别stringify函数,这个函数称为还原函数。
var book = {
title:"professional javascript",
edition:2,
author:["Nike A Tang"],
year:2011,
releasDate:new Date(2011,11,1)
};
var jsontext = JSON.stringify(book);
var copy = JSON.parse(jsontext,function (key,value) {
if (key == "releasDate") {
return new Date(value);
} else{
return value;
}
});
console.log(copy.releasDate.getFullYear());//2011
本文介绍了JSON的基本概念,包括简单值、对象和数组的表示方法,并详细解释了如何使用JavaScript进行JSON数据的序列化和解析。
217

被折叠的 条评论
为什么被折叠?



