关于JSON的读书笔记

作者: _米黎 | 来源:发表于2017-07-06 09:40 被阅读25次

1.对象

JavaScript对象字面量的表达方式:

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

当然,也可以写成这样:

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

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

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

与JavaScript的对象字面量相比,JSON对象有两个地方不一样:1. 没有声明变量;2. 末尾没有分号;==在JSON中对象的属性必须加双引号!==属性的值可以是简单值,也可以是复杂类型值

{
    "name": "Nicholas",
    "age": 29,
    "school": {
        "name": "Merrimack College",
        "location": "North Andover, MA"
}
}

2.数组

JavaScript中的数组字面量:

var values = [25, "hi", true];

JSON数组

[25, "hi", true]

JSON数组也没有变量和分号


3.JSON对象

JSON对象有两个方法:stringify()和 parse()

JSON.stringify() 方法将一个JavaScript值转换为一个JSON字符串,如果指定了一个replacer函数,则可以替换值,或者如果指定了一个replacer数组,可选地仅包括指定的属性。

举个例子

var book = {
    "title": "Professional JavaScript",
    "authors": [
        "Nicholas C. Zakas"
    ],
    edition: 3,
    year: 2011
 };
var jsonText = JSON.stringify(book, function(key, value){
    switch(key){
        case "authors":
        return value.join(",")
        case "year":
        return 5000;
        case "edition":
        return undefined;
        default:
        return value;
}
});

如果函数返回了undefined,那么这个值对应的属性会被删除。最后一定要提供default项,此时返回传入的值,以便其他值都能出现在结果中。缩进字符串最长不能超过 10 个字符长。如果字符串长度超过了 10 个,结果中将只出现前 10 个字
符。

toJSON()方法

举个栗子

var book = {
  "title": "Professional JavaScript",
  "authors": [
  "Nicholas C. Zakas","mihaibo","hanyanna"
  ],
  edition: 3,
  year: {
    lastyear:2016,
    nextyear:2018,
    toJSON:function () {
        return this.lastyear;
    }
  }
};
var jsonText = JSON.stringify(book,null,4);
console.log(jsonText); 
// 返回一下字符串:
{
    "title": "Professional JavaScript",
    "authors": [
        "Nicholas C. Zakas",
        "mihaibo",
        "hanyanna"
    ],
    "edition": 3,
    "year": 2016
}

可以让这个方法返回 undefined,此时如果包含它的对象嵌入在另一个对象中,会导致
它的值变成 null,而如果它是顶级对象,结果就是 undefined

序列化该对象的顺序如下:

(1) 如果存在 toJSON()方法而且能通过它取得有效的值,则调用该方法。否则,返回对象本身。

(2) 如果提供了第二个参数,应用这个函数过滤器。传入函数过滤器的值是第(1)步返回的值。

(3) 对第(2)步返回的每个值进行相应的序列化。

(4) 如果提供了第三个参数,执行相应的格式化。

ps:在将日期字符串转换为 Date 对象时,经常要用到还原函数

举个栗子:

var book = {
    "title": "Professional JavaScript",
    "authors": [
    "Nicholas C. Zakas"
    ],
    edition: 3,
    year: 2011,
    releaseDate: new Date(2011, 11, 1)
  };
var jsonText = JSON.stringify(book,null,4);
// console.log(jsonText);
var bookCopy = JSON.parse(jsonText, function(key, value){
    if (key == "releaseDate"){
        return new Date(value);
    } else {
      return value;
      }
    });
    console.log(bookCopy.releaseDate.getFullYear()); //2011

相关文章

  • 关于JSON的读书笔记

    1.对象 JavaScript对象字面量的表达方式: 当然,也可以写成这样: JSON表示上述对象的方式如下: 与...

  • JavaScript对象表示法,JSON

    关于JSON JSON:JavaScriptObjectNotation(Java 对象表示法) JSON 是存储...

  • 关于json序列化

    关于json序列化(javaBean转Json的细节处理) json序列化(javaBean转Json的细节) J...

  • 报错

    一:关于json数据 解决方法: json数据不能有注释

  • go操作json

    Go 语言提供了关于 json 的标准库包 encoding/json。 详细官网文档见 json package...

  • 关于JSON

    Json的介绍:21世纪初,Douglas Crockford寻找一种简便的数据交换格式,能够在服务器之间交换数据...

  • 关于JSON

    1、使用数组拼接出如下字符串 代码: 2、写出两种以上声明多行字符串的方法 3、补全如下代码,让输出结果为字符串:...

  • 20 JSON

    本章内容 理解 JSON 语法 解析 JSON 序列化 JSON 关于 JSON,最重要的是要理解它是一种数据格式...

  • 【工作代码】复杂 JSON 值替换处理

    总结下最近的工作遇到的点: 入参复杂 JSON 层层嵌套,Java 怎么优雅的处理。 一、关于 JSON JSON...

  • 第七周随笔(3)--JSON

    关于JSON的写法: 常用的解析JSON的开源代码: GSON fastJSON······· GSON的用法: ...

网友评论

    本文标题:关于JSON的读书笔记

    本文链接:https://www.haomeiwen.com/subject/xuzchxtx.html