码迷,mamicode.com
首页 > 编程语言 > 详细

JavaScript基础笔记(十一)JSON

时间:2018-03-12 01:09:06      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:name   text   字符串   lex   种类型   浏览器   fun   this   string   

JSON

关于JSON,最重要的一点是理解它是一种数据格式,不是编程语言。

一、语法

JSON 不支持变量、函数或对象实例,它就是一种表示结构化数据的格式,虽然与 JavaScript 中表示
数据的某些语法相同,但它并不局限于 JavaScript 的范畴。

JSON语法可以表示下列三种类型的值:

一)简单值

使用与JavaScript相同的语法,可以在JSON中表示字符串、数值、布尔值和null。但没有undefined。

注意在表示字符串时,只能使用双引号。

二)对象

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

//JavaScript对象
var person = {
    name: "Tom",
    age :19
};
//与JS对象相比,JSON对象不同的地方:
//1.不能声明变量;2.对象的属性必须加双引号;3.没有末尾分号
{
    "name": "Jerry",
    "age": "8",
    "school": {
        "name": "Nan Shan",
        "location": "xx00"
    }
}

三)数组

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

//JSON中的数组
[22, "Hello", "king"]
[
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
edition: 3,
year: 2011
},
{
"title": "Professional JavaScript",
"authors": [
"Nicholas C. Zakas"
],
edition: 2,
year: 2009
},
{
"title": "Professional Ajax",
"authors": [
"Nicholas C. Zakas",
"Jeremy McPeak",
"Joe Fawcett"
],
edition: 2,
year: 2008
}
]

二、解析与序列化

可以把JSON数据结构解析为JavaScript对象。

一)JSON对象

早期浏览器使用eval()函数把JSON解析为JavaScript对象和数组。但使用eval()函数对JSON数据进行转换存在一定风险,

因为可能会执行一些恶意代码。所以,建议使用全局对象JSON。

JSON对象的两个方法:

1)JSON.stringify():把JavaScript对象序列化为JSON字符串。

2)JSON.parse与上面相反。

    var book = {
        title: "JavaScript for xx",
        authors: [‘Price‘, ‘Tom‘, "Alex"],
        edition: 9,
        year: 2200
    };
    var jsonText = JSON.stringify(book);
    console.log(jsonText);
    //{"title":"JavaScript for xx",
    // "authors":["Price","Tom","Alex"],"edition":9,"year":2200}
    var bookInfo = JSON.parse(jsonText);
    console.log(bookInfo.authors);

在序列化 JavaScript 对象时,所有函数及原型成员都会被有意忽略,不体现在结果中。此外,值为
undefined 的任何属性也都会被跳过。

3)toJSON()

    var book = {
        title: "JavaScript for xx",
        authors: [‘Price‘, ‘Tom‘, "Alex"],
        edition: 9,
        year: 2200,
        toJSON: function () {
            return this.title;
        }
    };
    var jsonText = JSON.stringify(book);
    console.log(jsonText); //"JavaScript for xx"

JavaScript基础笔记(十一)JSON

标签:name   text   字符串   lex   种类型   浏览器   fun   this   string   

原文地址:https://www.cnblogs.com/Shadowplay/p/8547004.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!