json

問題を報告する ソースを表示 ナイトリー · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

モジュール json は、JSON 関連関数の Starlark モジュールです。

メンバー

decode

unknown json.decode(x, default=unbound)

decode 関数には、JSON 文字列という必須の位置引数が 1 つあります。文字列が表す Starlark 値を返します。
  • "null""true""false" は、NoneTrueFalse として解析されます。
  • 数値は 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)

encode 関数は、1 つの必須の位置引数を受け取ります。この引数は、ケースごとに JSON に変換されます。

  • None、True、False はそれぞれ「null」、「true」、「false」に変換されます。
  • int は、値がどれほど大きくても、10 進整数としてエンコードされます。一部のデコーダでは、非常に大きな整数をデコードできない場合があります。
  • 浮動小数点数は、数値が整数であっても、小数点または指数、またはその両方を使用してエンコードされます。有限でない浮動小数点値をエンコードすることはエラーです。
  • 文字列値は、値を表す 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 文字列。デフォルトは '' です。
indent 文字列。デフォルトは '\t' です。

インデント

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

indent 関数は、有効な JSON エンコード文字列の折り返し形式を返します。各配列要素またはオブジェクト フィールドは新しい行に表示され、接頭辞文字列で始まり、ネストの深さに応じてインデント文字列が 1 つ以上続きます。この関数は、1 つの必須位置パラメータ(JSON 文字列)と、2 つのオプションのキーワード専用文字列パラメータ(prefix と indent)を受け付けます。prefix は各改行の接頭辞を指定し、indent はインデントの単位を指定します。入力が無効な場合、関数が失敗するか、無効な出力が返されることがあります。

パラメータ

パラメータ 説明
s 文字列。必須
prefix 文字列。デフォルトは '' です。
indent 文字列。デフォルトは '\t' です。