自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

開發(fā)者必看!JSON 必知必會(huì)的關(guān)鍵要點(diǎn)

存儲(chǔ) 存儲(chǔ)架構(gòu)
什么是 JSON?JSON 是一種用于存儲(chǔ)和交換數(shù)據(jù)的文本格式,易于理解,并且與 JavaScript 的對(duì)象語(yǔ)法十分相似。

JSON,全稱為 JavaScript Object Notation,是一種輕量級(jí)的數(shù)據(jù)交換格式,已成為 Web API 和現(xiàn)代應(yīng)用程序中的通用語(yǔ)言。它簡(jiǎn)單直觀、易于閱讀,并且可以無(wú)縫跨編程語(yǔ)言使用。無(wú)論是處理 REST API、配置文件還是存儲(chǔ)數(shù)據(jù),JSON 隨處可見!

那么,JSON 到底是什么?如何操作它?讓我們一步步深入了解 JSON 的世界吧。

什么是 JSON?

JSON 是一種用于存儲(chǔ)和交換數(shù)據(jù)的文本格式,易于理解,并且與 JavaScript 的對(duì)象語(yǔ)法十分相似。

以下是一個(gè) JSON 示例:

{
  "name": "John Doe",
  "age": 30,
  "isDeveloper": true,
  "skills": ["JavaScript", "Python", "Java"],
  "address": {
    "city": "New York",
    "zip": "10001"
  }
}

JSON 的主要特點(diǎn):

  • 輕量級(jí):非常適合數(shù)據(jù)交換。
  • 基于文本:易于閱讀、編寫和解析。
  • 語(yǔ)言無(wú)關(guān):幾乎所有編程語(yǔ)言都支持。
  • 結(jié)構(gòu)化:數(shù)據(jù)以鍵值對(duì)的形式存儲(chǔ)。

JSON 可執(zhí)行的操作

解析 JSON

將 JSON 字符串轉(zhuǎn)換為 JavaScript 對(duì)象。

示例:

const jsonString = '{"name":"John", "age":30}';
const user = JSON.parse(jsonString);
console.log(user.name); // 輸出:John
console.log(user.age);  // 輸出:30

對(duì)象轉(zhuǎn)為 JSON 字符串

將 JavaScript 對(duì)象轉(zhuǎn)換為 JSON 字符串。

示例:

const user = {
  name: "Jane",
  age: 25,
  isDeveloper: true
};
const jsonString = JSON.stringify(user);
console.log(jsonString);
// 輸出:{"name":"Jane","age":25,"isDeveloper":true}

訪問(wèn) JSON 數(shù)據(jù)

通過(guò)點(diǎn)語(yǔ)法或中括號(hào)語(yǔ)法訪問(wèn) JSON 數(shù)據(jù)。

示例:

const user = {
  name: "Alex",
  skills: ["HTML", "CSS", "JavaScript"]
};
console.log(user.name);        // 輸出:Alex
console.log(user.skills[2]);   // 輸出:JavaScript

修改 JSON 數(shù)據(jù)

動(dòng)態(tài)更新 JSON 數(shù)據(jù)。

示例:

const user = {
  name: "Mike",
  age: 29
};
user.age = 30;  // 修改 age
user.city = "Los Angeles";  // 添加新鍵
console.log(user);
// 輸出:{name: "Mike", age: 30, city: "Los Angeles"}

遍歷 JSON

通過(guò)循環(huán)訪問(wèn) JSON 數(shù)組或?qū)ο蟆?/span>

示例:

const users = [
  { name: "Alice", age: 28 },
  { name: "Bob", age: 35 },
  { name: "Charlie", age: 22 }
];
users.forEach(user => {
  console.log(`${user.name} 的年齡是 ${user.age} 歲。`);
});
// 輸出:
// Alice 的年齡是 28 歲。
// Bob 的年齡是 35 歲。
// Charlie 的年齡是 22 歲。

驗(yàn)證 JSON

使用 try-catch 檢查 JSON 字符串是否格式正確。

示例:

const jsonString = '{"name": "John", "age": 30}';
try {
  const data = JSON.parse(jsonString);
  console.log("有效的 JSON:", data);
} catch (error) {
  console.error("無(wú)效的 JSON:", error.message);
}

JSON 的實(shí)際應(yīng)用

API 響應(yīng):

當(dāng)你請(qǐng)求 API 時(shí),通常會(huì)以 JSON 格式返回?cái)?shù)據(jù)。

示例:

{
  "status": "success",
  "data": {
    "id": 1,
    "name": "John",
    "role": "Developer"
  }
}

配置文件:

許多工具和庫(kù)都使用 JSON 來(lái)配置。

例如,Node.js 項(xiàng)目的 package.json:

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "start": "node app.js",
    "test": "jest"
  }
}

數(shù)據(jù)存儲(chǔ):

JSON 常用于數(shù)據(jù)庫(kù)中保存數(shù)據(jù),例如 MongoDB。

JSON 的優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

簡(jiǎn)單易懂。

受到大多數(shù)編程語(yǔ)言支持。

可讀性強(qiáng)。

非常適合用于 API 和配置文件。

缺點(diǎn):

數(shù)據(jù)類型有限(例如,不支持日期或 undefined)。

性能不如 Protobuf 等二進(jìn)制格式。

不支持注釋(如果需要注釋,可使用 YAML)。

JSON 的隱藏功能

自定義 stringify 函數(shù):

通過(guò) JSON.stringify 的 replacer 函數(shù)控制輸出格式。

示例:

const user = { name: "John", password: "1234" };
const jsonString = JSON.stringify(user, (key, value) => {
  return key === "password" ? undefined : value;
});
console.log(jsonString); 
// 輸出:{"name":"John"}

格式化輸出:

通過(guò) JSON.stringify 的 space 參數(shù)添加縮進(jìn),提升可讀性。

示例:

const user = { name: "Alice", age: 25 };
console.log(JSON.stringify(user, null, 2));
// 輸出:
// {
//   "name": "Alice",
//   "age": 25
// }

附加:JSON 與 XML 對(duì)比

圖片

總結(jié):

為什么 JSON 如此流行?

由于其簡(jiǎn)單性和通用性,JSON 已成為現(xiàn)代開發(fā)的基石。不管是處理 API、配置文件,還是數(shù)據(jù)庫(kù),掌握 JSON 操作會(huì)讓你在開發(fā)中更具競(jìng)爭(zhēng)力!

責(zé)任編輯:武曉燕 來(lái)源: 路條編程
相關(guān)推薦

2023-11-08 18:01:53

硬重置Git命令

2024-01-10 18:01:22

編程技巧Java 12

2014-02-09 10:30:17

Python程序員工具

2023-11-21 20:15:10

Git命令開發(fā)

2013-07-18 17:22:07

Android開發(fā)資源Android開發(fā)學(xué)習(xí)Android開發(fā)

2013-05-06 15:41:30

Android開發(fā)資源

2024-07-26 08:32:44

panic?Go語(yǔ)言

2011-12-01 09:00:12

Android提升開發(fā)性能要點(diǎn)

2012-03-05 10:01:43

移動(dòng)開發(fā)

2020-07-10 07:58:14

Linux

2024-11-15 11:11:48

2015-12-11 14:38:54

開發(fā)快速開發(fā)工具

2024-11-04 06:30:00

文本匹配模式Python開發(fā)

2012-05-14 18:35:20

Windows Pho

2010-12-06 09:06:09

2024-01-03 07:56:50

2022-05-18 09:01:19

JSONJavaScript

2016-01-05 13:43:37

谷歌Java競(jìng)爭(zhēng)

2011-07-08 14:14:13

Web服務(wù)器

2018-10-26 14:10:21

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)