JSON Schema 指南

JSON 架構

在我們進入 JSON Schema 之前,了解 JSON 和 JSON Schema 之間的區別很重要。

JSON

JSON 是 JavaScript Object Notation 的縮寫,它是一種獨立於語言的數據格式,API 用來發送請求和回答。 JSON 對於人和機器來說都易於讀寫。 JSON 是一種基於文本的格式,不受語言限制(語言無關)。

JSON 架構

JSON Schema 是驗證 JSON 數據結構的有用工具。 要指定 JSON 的結構,請使用基於 JSON 的格式。 其目的是確保 JSON 數據是可接受的。 我們應用程序的 JSON 數據的約定可以使用模式定義。

JSON Schema 規範分為三個主要部分:

JSON 超模式:

JSON Hyper-Schema 是一種 JSON Schema 語言,可用於通過超鏈接和指令標記 JSON 文檔,以通過基於文本的環境(如 HTTP)處理和更改外部 JSON 資源。 點擊 点击這裡 了解有關 JSON Hyper-Schema 的更多信息。

JSON 架構核心:

它是一組用於標記和驗證 JSON 文檔的規則。 

JSON 架構核心:

  • 描述您當前擁有的數據格式。 
  • 驗證可用於自動化測試的數據。 
  • 確保客戶提供的數據的準確性。  
  • 為人類和機器提供可讀文檔。 

JSON 模式驗證:

基於 JSON Schema 的驗證對實例數據的結構施加了限制。 之後,任何具有非斷言的關鍵字 信息,例如描述性元數據和使用指示,被添加到滿足所有聲明約束的實例位置。 

Newtonsoft 的 JSON Schema Validator 工具是一種可以直接在瀏覽器中免費使用的工具。 您可以使用此工具來測試 JSON 架構的結構。 此頁麵包含幫助您入門的控件和說明。 這樣,很容易看出如何改進您的 JSON 結構。

我們可以使用 JSON 模式驗證工具檢查我們的 JSON 對象:

JSON 驗證器無錯誤

如上圖所示,我們進行了年齡驗證(最小 = 20 和最大 = 40)。 沒有發現錯誤。

JSON 驗證器出錯

如果年齡驗證輸入不正確,它會顯示錯誤。

JSON 模式的創建

讓我們看一個 JSON Schema 的例子,看看我們在說什麼。 描述產品目錄的基本 JSON 對像如下:

JSON 示例

它的 JSON Schema 可能寫成如下:

JSON 架構結果

JSON Schema 是一個 JSON 文檔,該文檔必須是一個對象。 關鍵字是由 JSON Schema 指定的對象成員/屬性。 JSON Schema 中的“關鍵字”是指對像中鍵/值組合的“鍵”部分。 大多數情況下,編寫 JSON 模式涉及將特定“關鍵字”映射到對像中的值。 

讓我們仔細看看我們在示例中使用的關鍵字: 

資源架構所遵循的 JSON 架構由該屬性記錄下來。 這個模式是按照 drafts v4 標準編寫的,由“$模式”關鍵字。 這可以防止您的架構回退到當前版本,該版本可能與舊版本兼容,也可能不兼容。

在“標題“和”描述” 關鍵字只是解釋性的; 它們不會對所檢查的數據施加任何限制。 這兩個關鍵字描述了模式的目的:它描述了一個產品。

在“類型” 關鍵字定義了我們的 JSON 數據的第一個邊界條件; 它必須是一個 JSON 對象。 如果我們不為所有模式設置類型,代碼將無法運行。 一些常見的類型是“數字”“布爾”“整數”“空”“對象”“數組”“字符串”。

 

以下庫支持 JSON Schema:

 

語言

電子圖書館

C

WJ元素

蟒蛇

傑森

PHP

Json 架構

JavaScript的

jv

Go

gojson模式

科特林

媒體驗證器

紅寶石

JSONSchemer

JSON(語法)

讓我們簡要了解一下 JSON 的基本語法。 JSON 語法是 JavaScript 語法的子集,包括以下元素:

  • 名稱/值對用於表示數據。
  • 對象包含在大括號中,每個名稱都以“:”(冒號)開頭,值對由“,”(逗號)分隔。
  • 值由“,”(逗號)分隔,數組保存在方括號中。
JSON 語法示例

JSON 支持以下兩種數據結構:

  • 值的有序列表: 它可以是數組、列表或向量。
  • 名稱/值對的集合: 不同的計算機語言支持這種數據結構。

 

JSON(對象)

JSON 模式是一個 JSON 對象,它概述了不同 JSON 對象的類型和結構。 JavaScript 對象表達式可以表示 JavaScript 運行時環境中的 JSON 對象。 一些有效模式對象的例子如下:

架構

火柴

{}

任何值

{類型:'對象'}

一個 JavaScript 對象

{類型:'數字'}

一個 JavaScript 數字

{類型:'字符串'}

一個 JavaScript 字符串

例如:

製作一個空的新對象:

變種 JSON_Obj = {};

新對象創建:

var JSON_Obj = 新對象()

JSON(與 XML 比較)

JSON 和 XML 是獨立於語言的人類可讀格式。 在現實場景中,它們都可以創建、讀取和解碼。 基於以下標準,我們可以將 JSON 與 XML 進行比較。

複雜

因為 XML 比 JSON 更複雜,所以程序員更喜歡 JSON。

數組的使用

XML用於表達結構化數據; 然而,XML 不支持數組,但 JSON 支持。

解析

JSON 使用 JavaScript 的 eval 函數進行解釋。 與 JSON 一起使用時,eval 返回描述的對象。

 

示例:

 

JSON

XML的

{

   “公司”:法拉利,

   “名稱”:“GTS”,

   “價格”:404000

}

 

 

法拉利 

 

GTS 

 

404000 

 

JSON 架構的優勢

JSON 被設計成一種人類和機器可讀的語言。 但是,如果不進行一些微調,兩者都不可能。 JSON Schema 的優勢在於讓機器和人類都更容易理解 JSON。

使用 JSON Schema 還消除了對多個客戶端更新的需要。 列出常用的HTML代碼,然後在客戶端實現是一種典型但不准確的客戶端構建方法 API 應用。 但是,這不是最好的策略,因為服務器端的更改可能會導致某些功能出現故障。

JSON Schema 的主要優點是它與多種編程語言的兼容性,以及驗證的準確性和一致性。

JSON 模式支持廣泛的瀏覽器和 操作系統,因此用 JSON 編寫的應用程序不需要太多努力就可以使它們與所有瀏覽器兼容。 在開發過程中,開發人員考慮了多種瀏覽器,儘管 JSON 已經具備這些功能。

JSON 是共享任何大小數據(包括音頻、視頻和其他媒體)的最有效方式。 這是因為 JSON 將數據存儲在數組中,這使得數據傳輸更容易。 因此,JSON 是在線 API 和開發的最佳文件格式。

隨著 API 變得越來越普遍,可以合理地假設 API 驗證和測試將變得越來越重要。 隨著時間的推移,預計 JSON 不太可能變得更簡單也是現實的。 這意味著隨著時間的推移,擁有數據模式只會變得更加重要。 因為 JSON 是使用 API 的標准文件格式,所以 JSON Schema 是那些使用 API 的很好的替代品。

谷歌與隱身神話

谷歌與隱身神話

谷歌與隱身神話 1 年 2024 月 XNUMX 日,谷歌同意透過銷毀透過隱身模式收集的數十億資料記錄來和解訴訟。

閱讀更多»