JSON簡介及其應用

JSON簡介及其應用

A Brief Introduction and Applications of JSON

By Jackson@ML

1. JSON的概念

JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式,采用鍵值對(key-value)的方式組織數據,語法類似JavaScript對象,易于人閱讀和機器解析。

2. JSON的作用

JSON有幾方面的作用如下:
? 在前后端數據交互中傳輸結構化數據
? 用于API響應與請求格式(如RESTful API)
? 常見于配置文件(如.json)和持久化存儲格式

3. JSON的使用方法與編寫步驟

1) 使用花括號 {} 表示對象
2) 使用中括號 [] 表示數組
3) 鍵用雙引號包裹,值可以是字符串、數字、布爾值、數組或對象
4) 不允許注釋

4. 代碼示例

示例一: 以下是對某個人的對象特征描述的JSON格式。

{"name": "Jackson","age": 30,"languages": ["JavaScript", "Python", "Java"],"isActive": true
}

示例二: 以下是對某個團隊成員記錄的數組描述的JSON格式。

{
"employees":[{"firstName":"John", "lastName":"Doe"},{"firstName":"Anna", "lastName":"Smith"},{"firstName":"Peter", "lastName":"Jones"}
]
}

盡管示例一、示例二存儲的對象信息不同,但可以看出共同點,以及對單個對象的鍵值對,和對單個對象單一鍵對應的字符串值組成的數組,均可以用JSON格式來表達。

5. JSON助力Web開發功能

JSON有效且廣泛用于Web開發,它主要有以下特點:

1) 與服務器交換數據更高效,且比XML語言更加簡潔;
2) 可在Web站點前端異步加載數據(例如:AJAX,fetch);
3) 是API調用的通用格式,并且支持跨平臺和多語言開發。
4) 可用于本地存儲(localStorage)。

6. 在JavaScript中的應用

我們可以看看在JavaScript語言中,用來解析和生成JSON的示例如下:

// 將對象轉為JSON字符串
const jsonString = JSON.stringify(data);// 將JSON字符串轉為JavaScript對象
const obj = JSON.parse(jsonString);

7. 在Node.js常見場景的應用

7.1 應用場景一:讀取本地的JSON配置文件

許多Node.js后端項目使用JSON存儲配置或數據。示例代碼如下。
1) config.json

{"port": 3000,"db": "mongodb://localhost:27017/mydb"
}

2) JavaScript代碼示例app.js

const fs = require('fs');// 讀取 JSON 文件并解析為對象
const config = JSON.parse(fs.readFileSync('config.json', 'utf-8'));console.log(`Server will run on port: ${config.port}`);

7.2 應用場景二:與前端通信時,發送JSON響應

在構建Web API時,Node.js常用JSON響應客戶端請求。

示例:利用Express構建JSON API

const express = require('express');
const app = express();app.get('/api/user', (req, res) => {res.json({id: 1,name: 'Jackson',active: true});
});app.listen(3000, () => {console.log('API server running on http://localhost:3000');
});
7.3 應用場景三:處理客戶端提交的JSON數據
  • 首先,使用中間件解析前端POST請求中的JSON。示例代碼如下:
app.use(express.json()); // 中間件app.post('/api/data', (req, res) => {const data = req.body;console.log('Received data:', data);res.send('Data received');
});
  • 其次,前端發送請求:
fetch('/api/data', {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({name: 'Jackson', score: 100})
});

8. 連接MongoDB數據庫的應用

MongoDB是典型的文檔型數據庫,在互聯網崛起的今天,廣泛應用于Web站點、數據庫和大數據領域。

為了使用MongoDB,我們可以安裝Python第三方庫mongoose,執行以下命令即可完成安裝(前提是已經安裝Node.js且node包管理器npm可用):

$ npm install mongoose

完成安裝后,可以使用mongoos來保存JSON數據,示例代碼如下:

const mongoose = require('mongoose');// 1. 連接數據庫
mongoose.connect('mongodb://localhost:27017/myapp', {useNewUrlParser: true,useUnifiedTopology: true
});// 2. 定義數據模型(Schema)
const UserSchema = new mongoose.Schema({name: String,age: Number,email: String
});
const User = mongoose.model('User', UserSchema);// 3. 插入 JSON 對象
const userData = {name: 'Jackson',age: 30,email: 'jackson@example.com'
};const newUser = new User(userData);
newUser.save().then(() => console.log('User saved to MongoDB'));

也可以查詢JSON數據,示例代碼如下:

User.find({ name: 'Jackson' }).then(users => {console.log('Found users:', users);
});

9. 小結

JSON 是一種輕量級、易讀寫的數據交換格式,采用鍵值對結構,廣泛應用于 Web 開發。它與 JavaScript 原生兼容,支持對象、數組、字符串等數據類型。

在 Node.js 中,JSON 常用于配置管理、API 數據交互與文件讀寫;結合 MongoDB 使用時,JSON 可直接映射為文檔結構,便于數據插入、查詢與持久化,提升前后端通信與數據庫操作的效率。


Web開發技術文章持續推出,歡迎關注、收藏和點贊👍。

您的認可,我的動力!😃

推薦閱讀:

  1. 用Streamlit開發第一個Pythong應用程序
  2. 一分鐘了解Transformer
  3. 一分鐘了解Kubernetes
  4. 一分鐘了解MCP
  5. 一分鐘了解機器學習
  6. 一分鐘了解大語言模型(LLM)
  7. 一分鐘了解深度學習

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/86723.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/86723.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/86723.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

RNN(循環神經網絡)與LSTM(長短期記憶網絡)輸出的詳細對比分析

今天在與同事探討RNN時,引出了一個主題,RNN和LSTM的輸出有什么區別。 以下是關于傳統RNN(循環神經網絡)與LSTM(長短期記憶網絡)隱藏層內容、輸出結果及模型區別的詳細對比分析,結合結構原理、數…

【閑談】技術債:軟件開發的隱形殺手

編程中的“技術債”:隱形殺手與化解之道 在軟件開發的世界里,我們常談性能、安全、架構設計、用戶體驗等話題,但有一個常被忽視的概念卻如影隨形、悄然吞噬著項目的健康——技術債(Technical Debt)。 本文將帶你深入…

Elasticsearch | 索引和模板字段管理:增加新字段的詳細操作

關注CodingTechWork 背景介紹 Elasticsearch 是一款基于 Lucene 的搜索和數據分析引擎,廣泛應用于日志分析、全文檢索等領域。在使用 Elasticsearch 時,字段是存儲在索引中的數據單位,字段的定義決定了數據的存儲方式及其檢索效率。因此&…

HTML表格中<tfoot>標簽用法詳解

在HTML中&#xff0c;<tfoot>標簽用于定義表格的頁腳&#xff08;表腳&#xff09;&#xff0c;通常包含匯總信息&#xff08;如總計、平均值等&#xff09;。其核心特點和使用方法如下&#xff1a; 基本特性 位置靈活 <tfoot>必須位于<table>內&#xff0c…

深度學習正負樣本比例的影響及其調節方法

在深度學習中&#xff0c;數據是模型性能的決定性因素之一。特別是在二分類問題中&#xff0c;正負樣本的比例對模型訓練的影響尤為顯著。本文將探討正負樣本比例對深度學習的影響&#xff0c;并給出相應的調節方法和代碼示例。 什么是正負樣本比例&#xff1f; 在二分類問題…

【公司經營】安全公司產品經營

一、產品經營 1.1 產品矩陣設計方法&#xff1a;風險場景驅動? ?分層產品架構? ?基礎層?&#xff1a;防火墻/WAF/EDR&#xff08;標準化硬件軟件&#xff09;?分析層?&#xff1a;SOC平臺/XDR&#xff08;年訂閱制&#xff0c;SaaS化交付&#xff09;?響應層?&#…

鴻蒙 Scroll 組件深度解析:絲滑滾動交互全場景實現

一、引言&#xff1a;Scroll—— 內容溢出場景的交互中樞 在鴻蒙應用開發中&#xff0c;當界面內容超出屏幕可視范圍時&#xff0c;Scroll 容器組件成為實現流暢滾動交互的核心方案。作為從 API 7 開始支持的基礎組件&#xff0c;它通過極簡的屬性配置與強大的滾動控制能力&am…

第十節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 菜單管理(下)

Vben5 系列文章目錄 ?? 基礎篇 ? 第一節:Vben Admin 最新 v5.0 (vben5) 快速入門 ? 第二節:Vben Admin 最新 v5.0 (vben5) 快速入門 - Python Flask 后端開發詳解(附源碼) ? 第三節:Vben Admin 最新 v5.0 (vben5) 快速入門 - 對接后端登錄接口(上) ? 第四節:Vben Ad…

c#激光設備行業ERP軟件進銷存軟件庫存管理軟件財務管理軟件

# 激光設備行業ERP軟件進銷存軟件庫存管理軟件財務管理軟件 # 開發背景 本軟件是給廣東河源某客戶開發的激光設備行業ERP軟件進銷存軟件庫存管理軟件財務管理軟件 # 功能描述 軟件由基礎資料、庫存管理、 屬性管理、 用戶管理、 銷售管理、 財務管理。主要功能模塊是庫存管理…

python學習打卡day57

DAY 57 經典時序模型1 知識點回顧 序列數據的處理&#xff1a; 處理非平穩性&#xff1a;n階差分處理季節性&#xff1a;季節性差分自回歸性無需處理 模型的選擇 AR(p) 自回歸模型&#xff1a;當前值受到過去p個值的影響MA(q) 移動平均模型&#xff1a;當前值收到短期沖擊的影響…

python小記(十七):Python 使用“繼承”來管理yaml文件

Python 使用“繼承”來管理yaml文件 引言 引言 在 Python 中有時候我們會把參數都儲存在yaml文件中然后進行調用。當我們在進行一個很大的項目的時候&#xff0c;我們可能先需要一個base.yaml文件&#xff0c;然后再使用一個task1.yaml文件進行參數導入&#xff0c;并且task1.…

Windows搭建opencv cuda開發環境并驗證是否成功

編譯opencv cuda源碼 電腦安裝cuda 12.0或者11.8&#xff0c;根據你的電腦配置自行選擇 下載opencv 源碼 git clone https://github.com/opencv/opencv.git git clone https://github.com/opencv/opencv_contrib.git 在opencv目錄里新建 build 文件夾 cd build后 cmake…

【go】初學者入門環境配置,GOPATH,GOROOT,GOCACHE,以及GoLand使用配置注意

一、環境變量配置步驟 1. 打開環境變量設置 Win R 后輸入 sysdm.cpl → 點擊 確定在彈出窗口中點擊 高級 → 環境變量 2. 配置 GOROOT&#xff08;Go語言安裝根目錄&#xff09; 作用&#xff1a;告訴系統Go語言的安裝位置&#xff08;編譯器、標準庫等核心文件所在路徑&a…

gantt-task-react的改造使用

gantt-task-react的鏡像地址 例子 改造1&#xff1a;切斷父子關聯關系&#xff0c;父為project組件&#xff0c;子為task組件&#xff0c; 原來的功能是task組件拖動會影響到父組件&#xff0c;現在切斷兩者關聯關系&#xff0c;數據都用task組件&#xff0c; 給task組件重…

kotlin 協程(Coroutine)

Coroutine&#xff08;協程&#xff09;的轉換原理&#xff1a; 在 kotlin 中&#xff0c;Coroution 是一種輕量級的線程管理方式&#xff0c;其轉換原理涉及 狀態機生成、掛起函數轉換和調度器機制。 一、協程的本質&#xff1a;狀態機 kotlin 協程通過 編譯器生成狀態機 實…

線性變換之維數公式(秩-零化度定理)

秩數-零化度定理(rank-nullity theorem) 目錄 1. (映射)零空間(線性映射或變換的核)(null-space或nullspace) 2. 跨度(或開度)(span) 3. (線性映射的)零化度(nullity) 4. 線性變換的維數公式(秩數-零化度定理)(rank-nullity theorem) 5. 函數的上域(codomain) 1…

Spring Cloud Gateway 實戰:網關配置與 Sentinel 限流詳解

Spring Cloud Gateway 實戰&#xff1a;網關配置與 Sentinel 限流詳解 在微服務架構中&#xff0c;網關扮演著統一入口、負載均衡、安全認證、限流等多種角色。Spring Cloud Gateway 是 Spring Cloud 官方推出的新一代網關組件&#xff0c;相比于第一代 Netflix Zuul&#xff…

JAVA-常用API(二)

目錄 1.Arrays 1.1認識Arrays 1.2Arrays的排序 2.JDK8的新特性&#xff1a;Lambda表達式 2.1認識Lambda表達式 2.2用Lambda表達式簡化代碼、省略規則 3.JDK8的新特性&#xff1a;方法引用&#xff08;進一步簡化Lambda表達式&#xff09; 3.1 靜態方法引用 3.2 實例方法引…

深入理解PHP的命名空間

命名空間是PHP 5.3引入的一個特性&#xff0c;它的主要目的是解決在大型應用程序中可能出現的名稱沖突問題。在沒有命名空間的情況下&#xff0c;如果兩個不同的庫或模塊定義了相同名稱的函數或類&#xff0c;那么在使用這些庫或模塊的時候就會引發沖突。為了解決這個問題&…

SwiftUI學習筆記day5:Lecture 5 Stanford CS193p 2023

SwiftUI學習筆記day5:Lecture 5 Stanford CS193p 2023 課程鏈接&#xff1a;Lecture 5 Stanford CS193p 2023代碼倉庫&#xff1a;iOS課程大綱&#xff1a; Enum 定義&#xff1a;enum MyType { … }關聯值&#xff1a;case drink(name: String, oz: Int)匹配&#xff1a;switc…