美文网首页JavaScript 从零开始
[JavaScript] (Day-13) - JSON 数据交

[JavaScript] (Day-13) - JSON 数据交

作者: 已重置2020 | 来源:发表于2017-07-01 07:39 被阅读9次
Discontent is the first step in progress. 不知足是前进中的第一步。

JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。

JSON 实际上是JavaScript的一个子集。在JSON中,一共就这么几种数据类型:

  • number:和 JavaScript 的 number 完全一致;
  • boolean:就是 JavaScript 的 truefalse
  • string:就是 JavaScript 的 string
  • null:就是 JavaScript 的 null
  • array:就是 JavaScript 的 Array 表示方式——[]
  • object:就是 JavaScript 的{ ... }表示方式。

JSON 还定死了字符集必须是UTF-8,表示多语言就没有问题了。为了统一解析,JSON的字符串规定必须用双引号""Object的键也必须用双引号""

JavaScript 内置了 JSON 的解析


序列化

对象序列化成 JSON 格式的字符串

var person = {
    name: "Eric",
    age: 28,
    gender: "Male",
    height: 1.65,
    grade: null,
    married: true
    childs: ["Baby","Vicy"]
};

JSON.stringify(person); // '{"name":"Eric","age":28,"gender":"Male","height":1.65,"grade":null,married: true,"childs":["Baby","Vicy"]}'

要输出得好看一些,可以加上参数,按缩进输出:

JSON.stringify(person, null, '  ');

{
  "name": "Eric",
  "age": 28,
  "gender": "Male",
  "height": 1.65,
  "grade": null,
  "married": true
  "childs": [
    "Baby",
    "Vicy"
  ]
}

第二个参数用于控制如何筛选对象的键值,如果我们只想输出指定的属性,可以传入Array

JSON.stringify(person, ["name", "childs"], '  ');


{
  "name": "Eric",
  "childs": [
    "Baby",
    "Vicy"
  ]
}

还可以传入一个函数,这样对象的每个键值对都会被函数先处理:

function convert(key, value) {
    if (typeof value === 'string') {
        return value.toUpperCase();
    }
    return value;
}

JSON.stringify(person, convert, '  ');

{
  "name": "ERIC",
  "age": 28,
  "gender": "MALE",
  "height": 1.65,
  "grade": null,
  "married": true
  "childs": [
    "BABY",
    "VICY"
  ]
}


反序列化

JSON格式的字符串,我们直接用JSON.parse()把它变成一个JavaScript对象

JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]
JSON.parse('{"name":"Vivian","age":18}'); // Object {name: "Vivian", age: 18}
JSON.parse('true'); // true
JSON.parse('123.45'); // 123.45

JSON.parse()还可以接收一个函数,用来转换解析出的属性:

JSON.parse('{"name":"Vivian","age":18}', function (key, value) {
    // 拼接知道字符串
    if (key === "name") {
        return value + " is beautiful";
    }
    return value;
}); // Object {name: "Vivian is beautiful", age: 18}

相关文章

  • [JavaScript] (Day-13) - JSON 数据交

    JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。 JSON 实际上是J...

  • JSON

    JSON 什么是JSON? JSON(JavaScript Object Notation),是一种轻量级的数据交...

  • JSON数据格式及优缺点

    一、JSON数据   json的全称为:JavaScript Object Notation,是一种轻量级的数据交...

  • IOS JSON

    JSON JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交...

  • 什么是JSON

    一、什么是json? json的全称为:JavaScript Object Notation,是一种轻量级的数据交...

  • AJAX基础

    ### AJAX是什么 AJAX =异步JavaScript和XML(json)。通过在后台与服务器进行少量数据交...

  • java中的Json操作

    JSON:JavaScript对象表示法(JavaSript Object Notation),JSON是存储和交...

  • json语法笔记

    *JSON语法 JSON 语法是 JavaScript 语法的子集。 *JSON 名称/值对 JSON 数据的书写...

  • JS中JSON 类型 —— 数据的迭代

    JS 中 JSON 类型—— 数据的迭代 0. 什么是JSON? ​ JSON是JavaScript ...

  • 4.django返回json格式数

    Django数据序列化 1.Python json模块 介绍Json Json(Javascript Object...

网友评论

    本文标题:[JavaScript] (Day-13) - JSON 数据交

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