模組 json 是 JSON 相關函式的 Starlark 模組。
成員
解碼
unknown json.decode(x, default=unbound)解碼函式有一個必要的位置參數:JSON 字串。它會傳回字串表示的 Starlark 值。
"null"
、"true"
和"false"
會解析為None
、True
和False
。- 系統會將數字解析為 int,如果數字包含小數點或指數,則會解析為 float。雖然 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 物件。
參數
參數 | 說明 |
---|---|
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
|
string;必要 |
prefix
|
string;
預設值為 '' |
indent
|
string;
預設值為 '\t' |