ジョブに適切なツールを使用します。JSONではなくPythonを解析しているため、ast.literal_eval()
代わりに次を使用します。
>>> import ast
>>> ast.literal_eval('["a", "b", "c"]')
['a', 'b', 'c']
>>> ast.literal_eval("['a', 'b', 'c']")
['a', 'b', 'c']
>>> ast.literal_eval('["mixed", \'quoting\', """styles"""]')
['mixed', 'quoting', 'styles']
JSONドキュメントは、文字列に常に二重引用符を使用し、16\uhhhh
進エスケープ構文にUTF-16を使用{...}
し、キーと値のペアのオブジェクトを持ち、キーは常に文字列であり、シーケンスは常に[...]
リストであり、、と値を使用null
しtrue
ますfalse
。小文字のブール値に注意してください。数値は整数と浮動小数点の形式で提供されます。
Pythonでは、文字列表現は一重引用符と二重引用符を使用でき、Unicodeエスケープの使用\uhhhh
と\Uhhhhhhhh
形式(UTF-16サロゲートペアなし)、{...}
表示構文の辞書は文字列だけでなく多くの異なるタイプのキーを持つことができ、シーケンスはリスト([...]
)にすることができますがタプル((...)
)も使用します。または、他の種類のコンテナーを引き続き使用することもできます。PythonにはNone
、、True
およびFalse
(タイトルケース!)があり、数値は整数、浮動小数点数、および複雑な形式で提供されます。
一方を他方と混同すると、デコードが成功したが、絵文字などのエスケープされた非BMPコードポイントなど、データが誤って解釈された場合に、解析エラーまたは微妙な問題が発生する可能性があります。それらをデコードするには、必ず正しい方法を使用してください。そして、ほとんどの場合、Python構文データがある場合、誰かが実際に間違ったエンコード方法を使用し、誤ってPython表現を生成しただけです。その場合、ソースを修正する必要があるかどうかを確認してください。通常、出力は、代わりに使用されるべきstr(object)
場所を使用して生成されました。json.dumps(obj)