模块 json 是包含 JSON 相关函数的 Starlark 模块。
成员
解码
unknown json.decode(x, default=unbound)decode 函数有一个必需的位置参数:一个 JSON 字符串。它会返回字符串表示的 Starlark 值。
- 系统会将
"null"
、"true"
和"false"
解析为None
、True
和False
。 - 系统会将数字解析为 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)
encode 函数接受一个必需的位置参数,并根据情况将其转换为 JSON:
- None、True 和 False 分别转换为“null”“true”和“false”。
- 无论大小,int 都会编码为十进制整数。某些解码器可能无法解码非常大的整数。
- 浮点数使用小数点或指数(或两者兼有)进行编码,即使其数值是整数也是如此。对非有限浮点值进行编码会出错。
- 字符串值会编码为表示该值的 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
|
字符串;
默认值为 '' |
indent
|
字符串;
默认值为 '\t' |
缩进
string json.indent(s, *, prefix='', indent='\t')indent 函数会返回有效 JSON 编码字符串的缩进形式。每个数组元素或对象字段都会显示在新行中,以前缀字符串开头,后跟一个或多个缩进字符串的副本(具体取决于嵌套深度)。 该函数接受一个必需的位置参数(JSON 字符串)和两个可选的仅限关键字的字符串参数(前缀和缩进),用于指定每行新内容的前缀和缩进单位。如果输入无效,该函数可能会失败或返回无效输出。
参数
参数 | 说明 |
---|---|
s
|
字符串;
必填 |
prefix
|
字符串;
默认值为 '' |
indent
|
字符串;
默认值为 '\t' |