概要
JSONの文字列が与えられたときの扱い。
json_decode
で文字列をPHPの変数に変換json_encode
でPHPの変数を文字列に変換- このとき、
JSON_UNESCAPED_UNICODE
とJSON_PRETTY_PRINT
のフラグを立てる
- このとき、
json_decode
json_decode
関数は、引数で与えられたJSON文字列をPHPの変数に変換する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<?php $jsontext = '{ "要素1": "値1", "要素2": { "要素2-1": "値2-1" } }'; $decoded = json_decode($jsontext); var_dump($decoded); // object(stdClass)#1 (2) { // ["要素1"]=> // string(4) "値1" // ["要素2"]=> // object(stdClass)#2 (1) { // ["要素2-1"]=> // string(6) "値2-1" // } // } |
JSONのキーや単体の要素はstring
に、{ ... }
はstdClass
のオブジェクトに変換され、キー=>値がオブジェクトのプロパティーとなっている。
json_encode
そのままエンコードした場合
json_encode
は、PHPの変数で表現されたJSONコードを文字列に変換する。
ただしこのとき、ユニコードはエスケープされ、改行を含まない文字列となる。
1 2 3 4 5 6 7 |
<?php $jsontext = '{ "要素1": "値1", "要素2": { "要素2-1": "値2-1" } }'; $decoded = json_decode($jsontext); echo json_encode($decoded). PHP_EOL; // {"\u8981\u7d201":"\u50241","\u8981\u7d202":{"\u8981\u7d202-1":"\u50242-1"}} |
オプションフラグの設定
以下の2つのフラグをセットする。
JSON_UNESCAPED_UNICODE
- ユニコード文字をエスケープせずに扱う。
JSON_PRETTY_PRINT
- JSONの構造に即した改行・インデントを適用する。
これによって、ユニコード文字列はエスケープされず、JSONの構造に即した改行・インデントが適用された文字列が得られる。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $jsontext = '{ "要素1": "値1", "要素2": { "要素2-1": "値2-1" } }'; $decoded = json_decode($jsontext); echo json_encode($decoded, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT). PHP_EOL; # { # "要素1": "値1", # "要素2": { # "要素2-1": "値2-1" # } # } |