json

回報問題 查看原始碼 Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

成員

解碼

unknown json.decode(x, default=unbound)

decode 函式有一個必要的位置參數:JSON 字串。它會傳回字串表示的 Starlark 值。
  • "null""true""false" 會解析為 NoneTrueFalse
  • 系統會將數字解析為 int,如果包含小數點或指數,則會解析為浮點值。雖然 JSON 沒有無窮值的語法,但非常大的值可能會解碼為無窮大。
  • JSON 物件會解析為新的未凍結 Starlark 字典。如果物件中出現相同的鍵字串,系統會保留該鍵的最後一個值。
  • JSON 陣列會解析為新的未凍結 Starlark 清單。
如果 x 不是有效的 JSON 編碼,且指定了選用的 default 參數 (包括指定為 None),這個函式會傳回 default 值。如果 x 不是有效的 JSON 編碼,且選用的 default 參數「未」指定,則這個函式會失敗。

參數

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

encode

string json.encode(x)

編碼函式會接受一個必要的關鍵字引數,並依情況將其轉換為 JSON:

  • None、True 和 False 分別會轉換為「null」、「true」和「false」。
  • 無論 int 的大小為何,都會編碼為十進位整數。部分解碼器可能無法解碼非常大的整數。
  • 浮點值會使用小數點或指數 (或兩者皆使用) 進行編碼,即使其數值為整數也一樣。編碼為無窮大浮點值會導致錯誤。
  • 字串值會編碼為表示該值的 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')

indent 函式會傳回有效 JSON 編碼字串的縮排形式。每個陣列元素或物件欄位都會顯示在新行上,開頭是前置字串,後面依巢狀深度附加一或多個縮排字串。這個函式會接受一個必要的關鍵字參數 (JSON 字串),以及兩個選用的關鍵字專屬字串參數 (前置字元和縮排),用於指定每個新行的前置字元和縮排單位。如果輸入無效,函式可能會失敗或傳回無效的輸出內容。

參數

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