您的位置:首页 > Web前端 > JavaScript

JSON语法解析

2016-06-17 16:55 651 查看

JSON语法

JSON三种类型值

简单值:使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。但JSON不支持JavaScript的特殊值undefined.

如JSON表示字符串的方式:

Hello World!


对象:对象作为一种复杂数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂数据类型的值。

JSON中的对象与JavaScript字面量稍微有一些不同。下面是JavaScript中的对象表示方法:

var person = {
name: "HuangAn",
age: 23
};


JSON的表示法如下:

{
"name": "HuangAn",
"age": 23
}


数组:数组也是一种复杂数据类型,表示一组有序值列表,可以通过索引来访问数组元素,数组的值可以是简单值、对象或数组。

注意:JSON数组也没有变量和分号。如下所示:

[
{
"title": "professional JavaScript",
"authors": [
"Nicholas"
],
edition: 3,
year: 2011
},
{
"title": "professional Ajax",
"authors": [
"Nicholas",
"Joe Fawcett"
],
edition: 2,
year: 2008
}
]


JSON解析与序列化

JSON之所以流行,是因为它可以把JSON数据结构解析为有用的JavaScript对象。与XML数据结构要解析成DOM文档而且从中提取数据极为麻烦相比,JSON可以解析成JavaScript对象的优势极为明显。

JSON对象

JSON解析器基本上是使用JavaScript的eval()函数,因此eval()函数可以解析、解释并返回JavaScript对象和数组。JSON对象有两个方法:stringify()和parse()。在简单情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript值。这两个函数是逆序的过程。

如:

var book = {
title: "professional JavaScript",
authors:
[
"Nicholas"
],
edition: 3,
year: 2011
};
var jsonText = JSON.stringify(book);


最后的结果是JSON字符串,如下所示:

{
“title”: "professional JavaScript",
“authors”:
[
"Nicholas"
],
“edition”: 3,
“year”: 2011
}


而JSON.parse()方法则是相反的过程。

序列化选项

实际上,JSON.stringify()除了要序列化JavaScript对象之外,还可以接收另外两个参数。第一个参数是一个过滤器,可以使一个数组,也可以是一个函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进。示例分别如下:

1、过滤结果

var jsonText = JSON.stringify(book,["title","edition"]);
{“title”:"professional JavaScript","edition"3}


2、字符串缩进

var jsonText = JSON.stringify(book,null,"- -");
{
--“title”: "professional JavaScript",
-- “authors”: [
---- "Nicholas"
--],
--“edition”: 3,
--“year”: 2011
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  json javascript