JavaScript高等程序设计-择要笔记-6

关于JSON

1. JSON 对象

es5 定义了全局对象 JSON。
支撑的浏览器有 IE8+ 、Firefox 3.5+ 、Safari 4+、Chrome、Opera 10.5+

2. JSON.stringify()

JSON.stringify() 除了接收要序列化的对象外,还能够接收别的两个参数。
第一个参数是一个过滤器,能够是一个数组或函数,第二个参数是一个选项,示意是不是在JSON字符串中保存缩进。
如:

var book = {
  title: 'Professional JS',
  authors: ['abc', 'def'],
  edition: 3,
  year: 2011
}

第一个参数是数组

var jsonText1 = JSON.stringify(book, ['title', 'edition'])
console.log(jsonText1) // '{"title":"Professional JS","edition":3}'

第一个参数是函数

var jsonText2 = JSON.stringify(book, function (key, value) {
  switch (key) {
    case 'authors':
      return value.join(',');
    case 'year':
      return 2016;
    case 'edition':
      return undefined;
    default:
      return value;
  }
})
console.log(jsonText2) // '{"title":"Professional JS","authors":"abc,def","year":2016}'

第二个参数用于掌握效果中的缩进和空白符。
如果是数值,则示意每一个级别缩进的空格数,最大10,凌驾10 的值自动转换成10。
如果是字符串,则用作缩进字符。字符串长度凌驾10,效果中将只涌现前10个字符。
会在效果字符串中插进去换行符进步可读性。
如:

var jsonText3 = JSON.stringify(book, null, 6)
console.log(jsonText3)
// '{
//       "title": "Professional JS",
//       "authors": [
//             "abc",
//             "def"
//       ],
//       "edition": 3,
//       "year": 2011
// }'
var jsonText4 = JSON.stringify(book, null, '--')
console.log(jsonText4)
// '{
// --"title": "Professional JS",
// --"authors": [
// ----"abc",
// ----"def"
// --],
// --"edition": 3,
// --"year": 2011
// }'

3. toJSON() 要领

能够给对象定义 toJSON() 要领,返回本身的 JSON 数据格式,此要领优先级最高
如:

var book = {
  title: 'Professional JS',
  authors: ['abc', 'def'],
  edition: 3,
  year: 2011,
  toJSON: function () {
    return {
      name: 'wfc'
    }
  }
}
var jsonText = JSON.stringify(book, null, 1)
console.log(jsonText)
// '{
//  "name": "wfc"
// }'

注重: JSON.stringify() 处置惩罚的优先级为 toJSON() => 第二个参数 => 第三个参数。

4. JSON.parse()

JSON.parse() 接收另一个参数,该参数是一个函数,将在每一个健值对上采纳,类似于 JSON.stringify() 的过滤函数。
如:

var book = {
  title: 'Professional JS',
  authors: ['abc', 'def'],
  edition: 3,
  year: 2011,
  releaseDate: new Date(2016,11,22)
}
var jsonText = JSON.stringify(book, null, 1)
console.log(jsonText)
// '
// json.html:48 {
//  "title": "Professional JS",
//  "authors": [
//   "abc",
//   "def"
//  ],
//  "edition": 3,
//  "year": 2011,
//  "releaseDate": "2016-12-21T16:00:00.000Z"
// }'
var copyBook = JSON.parse(jsonText, function (key, value) {
  if (key === 'releaseDate') {
    console.log(value) // '2016-12-21T16:00:00.000Z'
    return new Date(value)
  } else {
    return value
  }
})

JSON部份完毕

    原文作者:wfc_666
    原文地址: https://segmentfault.com/a/1190000008109174
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞