json

回報問題 查看來源 Nightly

模組 json 是 JSON 相關函式的 Starlark 模組。

成員

解碼

unknown json.decode(x, default=unbound)

解碼函式有一個必要的位置參數:JSON 字串。並傳回該字串代表的 Starlark 值。
  • "null""true""false" 會剖析為 NoneTrueFalse
  • 如果數字包含小數點或指數,則系統會將數字剖析為 int 或浮點值。雖然 JSON 對非有限值沒有語法,但很大程度的值可以解碼為無限大。
  • JSON 物件會剖析為新的未凍結的 Starlark 字典。如果同一個鍵字串在物件中出現超過一次,系統會保留該鍵的最後一個值。
  • 系統會將 JSON 陣列剖析為新的未凍結的 Starlark 清單。
如果 x 不是有效的 JSON 編碼,且已指定選用的 default 參數 (包括指定為 None),這個函式會傳回 default 值。 如果 x 不是有效的 JSON 編碼,且指定選用的 default 參數,這個函式就會失敗。

參數

參數 說明
x string;必要
要解碼的 JSON 字串。
default 預設值為 unbound
如果指定此值,系統會在無法解碼 x 時傳回的值。

encode

string json.encode(x)

編碼函式接受一個必要位置引數,並視情況將引數轉換為 JSON:

  • None、True 和 False 會分別轉換為「null」、「true」和「false」。
  • 無論大小多大,都會編碼為十進位整數。有些解碼器可能無法解碼非常龐大的整數。
  • 浮點數將使用小數點或指數進行編碼 (即使其數值為整數)。將非有限浮點值編碼時會發生錯誤。
  • 字串值編碼為代表值的 JSON 字串常值。每個未配對的代理值都會由 U+FFFD 取代。
  • 字典會編碼為 JSON 物件,按鍵順序。如有任何索引鍵不是字串,就會發生錯誤。
  • 清單或元組會編碼為 JSON 陣列。
  • 類似結構體的值會以欄位名稱順序編碼為 JSON 物件。
應用程式定義的類型可能會定義專屬的 JSON 編碼。 將任何其他值編碼會產生錯誤。

參數

參數 說明
x 必要

encode_indent

string json.encode_indent(x, *, prefix='', indent='\t')

encode_indent 函式等同於 json.indent(json.encode(x), ...)。如需格式設定參數的說明,請參閱 indent

參數

參數 說明
x 必要
prefix string;預設值為 ''
indent string;預設值為 '\t'

縮排

string json.indent(s, *, prefix='', indent='\t')

縮排函式會傳回有效的 JSON 編碼字串縮排格式。每個陣列元素或物件欄位都會逐行出現,且視巢狀深度而定,開頭為前置字串字串,後面加上一或多個縮排字串的副本。此函式接受一個必要位置參數、JSON 字串,以及兩個選用的僅限關鍵字字串參數、前置字元和縮排,用於指定每個新行的前置字串,以及縮排單位。如果輸入內容無效,函式可能會失敗或傳回無效的輸出內容。

參數

參數 說明
s string;必要
prefix string;預設值為 ''
indent string;預設值為 '\t'