JSON与JavaScript的转换

JSON是一种数据格式,可以把 JSON 直接传给 eval(),而且不必创建 DOM 对象。它有三种类型的值:

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

例如:5、“hello world!”
对象:对象作为一种复杂数据类型,表示的是一组无序的键值对儿。而每个键值对儿中的值可以是简单值,也可以是复杂数据类型的值。

下面是一个 JavaScript 中的对象字面量:

var person = {
    name: "Nicholas",
    age: 29
};

json表示上述对象的方式如下:

{
    "name": "Nicholas",
    "age": 29
}

属性的值可以是简单值,也可以是复杂类型值,因此可以像下面这样在对象中嵌入对象:

{
    "name": "Nicholas",
    "age": 29,
    "school": {
        "name": "Merrimack College",
        "location": "North Andover, MA"
    }
}
数组:数组也是一种复杂数据类型,表示一组有序的值的列表,可以通过数值索引来访问其中的值。数组的值也可以是任意类型——简单值、对象或数组。

JavaScript 中的数组字面量:var values = [25, "hi", true];在json中,可以采用同样的语法表示同一个数组:[25, "hi", true]。

把数组和对象结合起来,可以构成更复杂的数据集合,例如:

[{
    "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
}, {
    "title": "Professional Ajax",
    "authors": [
        "Nicholas C. Zakas",
        "Jeremy McPeak",
        "Joe Fawcett"
    ],
    edition: 1,
    year: 2007
}]

JSON 不支持变量、函数或对象实例。JavaScript 字符串与 JSON 字符串的最大区别在于, JSON 字符串必须使用双引号(单引号会导致语法错误)。

JSON 对象有两个方法: stringify()parse()在最简单的情况下,这两个方法分别用于把JavaScript 对象序列化为 JSON 字符串和把 JSON 字符串解析为原生 JavaScript 值。

var book = {
    "title": "Professional JavaScript",
    "authors": [
        "Nicholas C. Zakas"
    ],
    edition: 3,
    year: 2011
};
var jsonText = JSON.stringify(book, null, 4);
// var jsonText = JSON.stringify(book, null, " - -");
console.log(jsonText);

var bookCopy = JSON.parse(jsonText, function(key, value) {
    if (key == "releaseDate") {
        return new Date(value);
    } else {
        return value;
    }
});
console.log(bookCopy);
原文地址:https://www.cnblogs.com/guiren/p/4970969.html