亚洲一区精品自拍_2021年国内精品久久_男同十八禁gv在线观看_免费观看a级性爱黄片

當(dāng)前位置:文章中心>技術(shù)教程
公告通知 新聞快遞 技術(shù)教程 產(chǎn)品展示

適用于JavaScript和Node.js的JSON初學(xué)者教程

發(fā)布時(shí)間:2021-11-24 點(diǎn)擊數(shù):789

介紹


在后端和前端之間交換數(shù)據(jù)的最流行的格式之一是JSON,它用來(lái)表示JavaScript對(duì)象。它與常規(guī)JavaScript對(duì)象的外觀非常相似,但也有其獨(dú)特之處。它的讀音為“ jason”或“ jay-sun”,所以您可能會(huì)聽(tīng)到一些不同的發(fā)音。


JSON對(duì)其使用的編程語(yǔ)言沒(méi)有任何限制。您可以在這樣的組織中工作:有些后端服務(wù)是用Python編寫(xiě)的,有些后端是Java的,前端是JS的,它們都可以完美地交換JSON消息。


以JSON格式存儲(chǔ)數(shù)據(jù)


首先JSON是一個(gè)字符串。這允許在需要時(shí)進(jìn)行非常有效的數(shù)據(jù)壓縮。缺點(diǎn)是我們無(wú)法存儲(chǔ)循環(huán)數(shù)據(jù)結(jié)構(gòu),例如,引用自身的對(duì)象。


(幾乎)所有內(nèi)容都應(yīng)使用引號(hào)引起來(lái)


與JavaScript不同,您只應(yīng)使用雙引號(hào)并將所有對(duì)象屬性包裝在其中。您不能使用單引號(hào)或反引號(hào)。


在JS中,我們有一個(gè)像這樣的對(duì)象


{  name: 'Jack',  isMarried: false,  age: 25, }


而在JSON中,它將變成


{  "name": "Jack",  "isMarried": false,  "age": 25 }


請(qǐng)注意:在JavaScript對(duì)象中,在逗號(hào)后出現(xiàn)逗號(hào)age: 25,是可以接受的,但在JSON中則是不允許的。


所有字段名稱都用雙引號(hào)引起來(lái),但并非所有原始值都使用雙引號(hào)引起來(lái)。數(shù)字和布爾值不帶引號(hào)存儲(chǔ)。


對(duì)象存儲(chǔ)在花括號(hào)中


像在JS中一樣,花括號(hào)用于存儲(chǔ)對(duì)象。


請(qǐng)注意,如果服務(wù)器以JSON格式響應(yīng),則期望它以對(duì)象響應(yīng)。您不能只列出這些字段。它們都需要用大括號(hào)括起來(lái)才能成為JSON對(duì)象。


數(shù)組存儲(chǔ)在方括號(hào)中


一切都與JS中完全一樣,我們將數(shù)組的名稱用雙引號(hào)引起來(lái),并且數(shù)組本身在方括號(hào)中表示。


{

 "pets": ["Rex", "Sandy"]

}


再次注意,該行的末尾沒(méi)有逗號(hào)或分號(hào)。


所有JSON對(duì)象數(shù)據(jù)都存儲(chǔ)為"key": “value”(“鍵”:“值”)對(duì)


與JS中一樣,您只能將對(duì)添加key:value到對(duì)象。如果需要存儲(chǔ)多個(gè)不帶鍵的值,則需要一個(gè)數(shù)組。


將JavaScript對(duì)象轉(zhuǎn)換為JSON并返回


要將常規(guī)JS對(duì)象轉(zhuǎn)換為JSON字符串,您需要此JSON.stringify(obj)函數(shù)。無(wú)需安裝其他模塊即可使用。您向其傳遞一個(gè)對(duì)象,obj并獲得一個(gè)JSON對(duì)象作為輸出。


const user = {  name: 'Jack',  isMarried: false,  age: 25, } const userJSON = JSON.stringify(user); console.log(userJSON); // {"name": "Jack", "isMarried": false, "age": 25}

要從JSON轉(zhuǎn)換為常規(guī)對(duì)象,我們需要JSON.parse(s)函數(shù)。我們以JSON格式的字符串作為輸入,并返回一個(gè)普通的JS對(duì)象。


const jsonString = '{"name": "Jack", "isMarried": false, "age": 25}';

const parsedUser = JSON.parse(jsonString);


console.log(parsedUser); // {name: 'Jack', isMarried: false, age: 25}


Express.js和JSON


如果您不熟悉Express,我將在后續(xù)的文章為您講解:


如何創(chuàng)建Express服務(wù)器

快速中間件和外部訪問(wèn)

由于我們知道JSON對(duì)象是一個(gè)字符串,因此我們可以非常輕松地修改服務(wù)器并發(fā)送一些對(duì)象而不是Hello, Express.js。


假設(shè)我們需要將一個(gè)對(duì)象傳遞給前端


{  name: 'Hero',  isLearning: true,  level: 'apprentice', }


我們將通過(guò)幾種方式來(lái)做到這一點(diǎn)。在所有情況下,前端都會(huì)收到相同的內(nèi)容,您可以在瀏覽器中通過(guò)請(qǐng)求進(jìn)行驗(yàn)證。


普通字符串:

server.get('/', (req, res) => {

 return res.send('{"name": "Hero", "isLearning": true, "level": "apprentice"}');

})


對(duì)象轉(zhuǎn)換為JSON.stringify:

server.get('/', (req, res) => {

 const user = { name: 'Hero', isLearning: true, level: 'apprentice' };


對(duì)象轉(zhuǎn)換為res.json:

server.get('/', (req, res) => {  const user = { name: 'Hero', isLearning: true, level: 'apprentice' };  return res.json(user); })


我會(huì)重復(fù)一遍。在所有情況下,結(jié)果都是相同的。我們發(fā)送狀態(tài)為200和字符串的響應(yīng),{"name": "Hero", "isLearning": true,"level": "apprentice"}收件人可以根據(jù)需要使用該字符串。


老實(shí)說(shuō),res.send和res.json之間存在細(xì)微差別。如果使用,并且選擇,則會(huì)設(shè)置 一個(gè)特殊的標(biāo)頭Content-Type。text/htmlres.sendapplication/jsonres.json


res.json如果您有想要以JSON格式發(fā)送的對(duì)象,則使用此屬性。

第三個(gè)示例是最方便的示例,因?yàn)槲覀儾粓?zhí)行任何不必要的操作。我們將對(duì)象傳遞給,res.json并在內(nèi)部進(jìn)行到JSON字符串的轉(zhuǎn)換。JSON.stringify在這種情況下,不需要像示例2一樣對(duì)進(jìn)行額外的(顯式)調(diào)用。


最后給大家分享一個(gè)學(xué)習(xí)全棧JavaScript的網(wǎng)站:


https://js.coderslang.com/


比較生動(dòng)有趣的帶入性學(xué)習(xí)

image.png