json

报告问题 查看源代码 每晚 · 7.2。 · 7.1。 · 7.0 · 6.5。 · 6.4 模块 json 是包含 JSON 相关函数的 Starlark 模块。

成员

解码

unknown json.decode(x, default=unbound)

解码函数有一个必需的位置参数:JSON 字符串。 它会返回字符串表示的 Starlark 值。 <ph type="x-smartling-placeholder">
    </ph>
  • "null""true""false" 解析为 NoneTrueFalse
  • 数字会被解析为整数,如果数字包含小数点或指数,则解析为浮点数。虽然 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”。
  • 无论整数有多大,都会编码为十进制整数。某些解码器可能无法解码非常大的整数。
  • 浮点数使用小数点和/或指数进行编码,即使其数值为整数也是如此。对非有限浮点值进行编码会发生错误。
  • 字符串值被编码为表示值的 JSON 字符串字面量。每个未配对的代理都会替换为 U+FFFD。
  • 字典按照键顺序编码为 JSON 对象。如果任意键不是字符串,则会引发错误。
  • 列表或元组编码为 JSON 数组。
  • 类似结构体的值会按字段名称顺序编码为 JSON 对象。
。 应用定义的类型可以定义自己的 JSON 编码。 对任何其他值进行编码会产生错误。

参数

参数 说明
x 必需

encode_indent

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

enen_ending 函数等效于 json.indent(json.encode(x), ...)。有关格式参数的说明,请参阅 indent

参数

参数 说明
x 必需
prefix 默认值为 ''
indent 默认值为 '\t'

缩进

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

缩进函数会返回 JSON 编码的有效字符串的缩进形式。 每个数组元素或对象字段都另起一行,以前缀字符串开头,后跟一个或多个缩进字符串副本(具体取决于其嵌套深度)。 该函数接受一个必需的位置参数,即 JSON 字符串。 和两个仅包含关键字的可选字符串参数(前缀和缩进) ,用于指定每个新行的前缀和缩进单位。 如果输入无效,函数可能会失败或返回无效的输出。

参数

参数 说明
s 必需
prefix 默认值为 ''
indent 默认值为 '\t'