一文看懂 json(chatgpt4o 輔助編寫)

难以怀瑾發表於2024-09-26

一、json 資料格式

JSON(JavaScript Object Notation)是一種輕量級的資料交換格式,其本質上是基於鍵值對的結構。JSON 的資料格式有幾種主要的表示方式,包括:

1. 物件(Object)

JSON 物件是由花括號 {} 包裹的一組鍵值對,鍵是字串並且必須是雙引號包含的字串(不要和python字典中鍵是不可變型別混淆),值可以是字串、數字、布林值、陣列、物件等。

格式:

{
  "name": "Alice",
  "age": 30,
  "isStudent": false
}

2. 陣列(Array)

JSON 陣列是一個有序的值列表,使用方括號 [] 包裹。陣列中的元素可以是任意型別,包括物件、字串、數字等。

格式:

[
  "apple",
  "banana",
  "cherry"
]

3. 字串(String)

字串是由雙引號包裹的 Unicode 字串,通常表示文字資料。

格式:

"Hello, World!"

4. 數字(Number)

數字可以是整數或浮點數,不帶引號。

格式:

42

3.14159

5. 布林值(Boolean)

布林值只有兩個可能值:truefalse

格式:

true

6. 空值(Null)

null 是表示空或無值的 JSON 資料型別。

格式:

null

總結

JSON 資料的主要格式有以下幾種:

  • 物件(Object): 使用 {} 包裹的鍵值對集合。
  • 陣列(Array): 使用 [] 包裹的有序值列表。
  • 字串(String): 使用雙引號包裹的文字。
  • 數字(Number): 整數或浮點數。
  • 布林值(Boolean): truefalse
  • 空值(Null): null 表示空。

這些元素可以相互巢狀,形成更復雜的 JSON 結構。

二、json 陣列必須是同一型別的值?

在傳統程式語言中(例如 Java、C 等)還有golang,陣列通常要求所有元素都必須是相同的資料型別,這種型別的陣列稱為 “強型別陣列”。例如,一個整型陣列只能包含整數值。

然而,JSON 的陣列並沒有這個限制。JSON 是一種資料交換格式,其設計目標是靈活和輕量化,因此允許陣列中的元素是不同的資料型別。這種特性使得 JSON 陣列可以包含混合型別的資料,稱為 “弱型別陣列”。

JSON 陣列的定義
在 JSON 中,陣列是一個有序的值集合,使用方括號 [] 包圍,並且陣列中的每個元素可以是任意合法的 JSON 資料型別(如數字、字串、物件、布林值、null,甚至其他陣列)。

例子:

[
    42,            // 數字
    "Hello",       // 字串
    true,          // 布林值
    null,          // 空值
    {"key": "value"},  // 物件
    [1, 2, 3]      // 陣列
]

在這個例子中,JSON 陣列包含了多種型別的元素(數字、字串、布林值、空值、物件、陣列),這在 JSON 中是完全合法的。

總結
雖然傳統陣列定義要求同一型別的值,但 JSON 陣列是靈活的,可以包含不同型別的資料。這種設計使得 JSON 更加適合表示複雜的資料結構和進行資料交換。

三、可以使用單引號?

JSON 鍵和值中的字串必須使用雙引號

['apple', 'banana', 'cherry']

四、json 中不一定必須存物件

思維有點定式了,因為見到的 json 物件都是{}格式,但是實際 json 格式也可以儲存1,”1“等值

相關文章