Python3 – json

概要

JSONの文字列が与えられたときの扱い。

  1. json.loadsで文字列をPythonの変数に変換(デコード)
  2. json.dumpsでPythonの変数を文字列に変換(エンコード)
    • ensure_ascii=Falseでユニコード文字をエスケープさせない
    • indent=nでJSONの構造に即した改行・インデントを適用

json.loads

json.loadsメソッドは、JSON文字列をPythonの変数にデコードする。Pythonの辞書になっていることがわかる。

JSONのキーと値が辞書のキーと値に対応している。

json.dumps

そのままエンコードした場合

json.dumpsは、辞書に変換されたJSONの内容を文字列にエンコードする。

ただしこのとき、ユニコードはエスケープされ、改行を含まない文字列となる。

引数設定によるJSONの構造表現

以下の2つの引数を指定する。

ensure_ascii=False
ユニコードをエスケープせずそのままの表現とする。
indent=n
JSONの構造に即した改行・インデントを適用する。

これによって、ユニコード文字列はエスケープされず、JSONの構造に即した改行・インデントが適用された文字列が得られる。

 

 

PHP – json

概要

JSONの文字列が与えられたときの扱い。

  1. json_decodeで文字列をPHPの変数に変換
  2. json_encodeでPHPの変数を文字列に変換
    • このとき、JSON_UNESCAPED_UNICODEJSON_PRETTY_PRINTのフラグを立てる

json_decode

json_decode関数は、引数で与えられたJSON文字列をPHPの変数に変換する。

JSONのキーや単体の要素はstringに、{ ... }stdClassのオブジェクトに変換され、キー=>値がオブジェクトのプロパティーとなっている。

json_encode

そのままエンコードした場合

json_encodeは、PHPの変数で表現されたJSONコードを文字列に変換する。

ただしこのとき、ユニコードはエスケープされ、改行を含まない文字列となる。

オプションフラグの設定

以下の2つのフラグをセットする。

JSON_UNESCAPED_UNICODE
ユニコード文字をエスケープせずに扱う。
JSON_PRETTY_PRINT
JSONの構造に即した改行・インデントを適用する。

これによって、ユニコード文字列はエスケープされず、JSONの構造に即した改行・インデントが適用された文字列が得られる。