亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

5分鐘了解JSON那些事兒

ad6623 / 1348人閱讀

摘要:簡介是對象表示法的縮寫是一種數(shù)據(jù)格式而不是一種編程語言用來表示結(jié)構(gòu)化數(shù)據(jù)是的一個嚴(yán)格子集并不從屬于很多編程語言都可以用數(shù)據(jù)格式語法語法可以表示以下三種類型的值簡單值字符串?dāng)?shù)值布爾值但是不支持對象數(shù)組不支持變量函數(shù)對象實例簡單值字符串?dāng)?shù)字布爾

JSON 簡介

JSON是JavaScript Object Notation(JavaScript對象表示法)的縮寫

JSON是一種數(shù)據(jù)格式, 而不是一種編程語言, 用來表示結(jié)構(gòu)化數(shù)據(jù)

JSON是JavaScript的一個嚴(yán)格子集

JSON并不從屬于JavaScript, 很多編程語言都可以用JSON數(shù)據(jù)格式

語法

JSON語法可以表示以下三種類型的值:

簡單值: 字符串/數(shù)值/布爾值/null, 但是不支持undefined

對象

數(shù)組

JSON不支持變量/函數(shù)/對象實例

簡單值

字符串

"Hello JSON"

數(shù)字

66

布爾值

true

null

null
對象

和JavaScript對比來看 ->

JavaScript表示對象

鍵值對的鍵可以加引號也可以不加, 如果加引號, 可以加單引號也可以加雙引號

// 最常見就這么寫
const obj1 = {
  foo: "bar",
  num: 66,
  status: true
};
// 這么寫也oconstet obj2 = {
  "foo": "bar",
  "num": 66,
  "status": true
};
// 這么寫也ok
const obj1 = {
  "foo": "bar",
  "num": 66,
  "status": true
};

JSON表示對象

鍵值對的鍵必須加雙引號(手寫JSON時一定要注意)

對象沒有變量聲明, 因為JSON根本就沒有變量的概念(它不是一個編程語言)

末尾沒有分號

{
  "foo": "bar",
  "num": 66,
  "status": true
}

和JavaScript相似, 對象可以嵌套對象

{
  "foo": "bar",
  "num": 66,
  "status": true,
  "baz": {
    "num": 88
  }
}

注, 同名屬性可以在不同的對象中, 但是不能出現(xiàn)在同一個對象中

數(shù)組

和JavaScript對比來看 ->

JavaScript表示數(shù)組

let arr = ["hello", 66, true];

JSON表示數(shù)組

同樣沒有變量聲明和結(jié)尾的分號, 同時注意字符串簡單值要加雙引號

["hello", 66, true]

數(shù)組和對象結(jié)合起來可以構(gòu)成復(fù)雜的集合, 比如students.json文件中可能是這樣嬸兒的

[
  {
    "name": "小明",
    "age": 10,
    "score": {
      "math": 88,
      "english": 99
    }
  },
  {
    "name": "小強",
    "age": 11,
    "score": {
      "math": 98,
      "english": 96
    }
  }
]

看到以上同JavaScript的不同之處, 我們可以知道為什么說JSON是JavaScript的一個嚴(yán)格子集了吧

JSON序列化與解析 基本用法

ECMAScript5定義了全局對象JSON, 用來解析JSON字符串

簡單來說, JSON對象有兩個方法

JSON.stringify(): 把JavaScript對象序列化為JSON字符串

JSON.parse(): 把JSON字符串解析為原生JavaScript值

const book = {
  name: "Learn JavaScript in One Day",
  pages: 1
};

const jsonText = JSON.stringify(book); // 序列化
// "{"name":"Learn JavaScript in One Day","pages":1}"

const parseText = JSON.parse(jsonText); // 解析
// {name: "Learn JavaScript in One Day", pages: 1}

默認(rèn)情況下, JSON.stringify()輸出的JSON字符串不包含任何空格字符或縮進(jìn)(是不是給我們提供了一種將去除數(shù)據(jù)中無用的空白和縮進(jìn)的方法呢).

在序列化JavaScript對象時, 所有函數(shù)及原型成員都會被有意忽略, 不體現(xiàn)在結(jié)果中. 此外, 值為undefined的任何屬性也都會被跳過. 結(jié)果中最終都是值為有效JSON數(shù)據(jù)類型的實例屬性.

const book = {
  name: "Learn JavaScript in One Day",
  pages: 1,
  foo: undefined
};

const jsonText = JSON.stringify(book); // 序列化
// "{"name":"Learn JavaScript in One Day","pages":1}"
// foo的值為undefined, 所被忽略掉了

將JSON字符串直接傳遞給JSON.parse()就可以得到相應(yīng)的JavaScript值.

JSON.parse()就是JSON.stringify()的逆向操作. 將一個JavaScript值序列化之后再解析JSON.parse(JSON.stringify(foo))和原來的foo幾乎一樣.

注意, 為什么說是幾乎一樣呢?

如果foo是一個對象或數(shù)組, 那么這么一折騰就變成了兩個不同的對象或數(shù)組了;

這就提供了一種克隆對象和數(shù)組的方法

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/103341.html

相關(guān)文章

  • 在開始第一個機器學(xué)習(xí)項目之前就了解那些事兒

    摘要:此外,與訓(xùn)練機器學(xué)習(xí)模型的作業(yè)相比,作業(yè)具有不同的執(zhí)行配置文件。此外,還制作了一個界面,以便控制機器學(xué)習(xí)的參數(shù)指定用于訓(xùn)練的數(shù)據(jù)量等。 摘要: 一份機器學(xué)習(xí)過來人的經(jīng)驗清單分享,主要是包含一些關(guān)于構(gòu)建機器學(xué)習(xí)工作流以及Apache Spark應(yīng)該注意的一些事項,希望這個清單能夠幫助那些正在學(xué)習(xí)機器學(xué)習(xí)的相關(guān)人員少走一些彎路,節(jié)約一些時間。 showImg(https://segment...

    BearyChat 評論0 收藏0
  • [聊一聊系列]聊一聊前端模板與渲染那些事兒

    摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼作為現(xiàn)代應(yīng)用,的大量使用,使得前端工程師們?nèi)粘5拈_發(fā)少不了拼裝模板,渲染模板。我們今天就來聊聊,拼裝與渲染模板的那些事兒。一改俱改,一板兩用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog...

    UCloud 評論0 收藏0
  • [聊一聊系列]聊一聊前端模板與渲染那些事兒

    摘要:歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面不僅僅是代碼作為現(xiàn)代應(yīng)用,的大量使用,使得前端工程師們?nèi)粘5拈_發(fā)少不了拼裝模板,渲染模板。我們今天就來聊聊,拼裝與渲染模板的那些事兒。一改俱改,一板兩用。 歡迎大家收看聊一聊系列,這一套系列文章,可以幫助前端工程師們了解前端的方方面面(不僅僅是代碼):https://segmentfault.com/blog...

    Yangder 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<