最近、短縮URLのAPIインターフェースを開発しており、APIに関する多くの記事を読んでいました。最もよく使われているのがJSON技術です。JSONはJavaScript Object Notationとも呼ばれ、軽量なデータ交換形式です。私のAPIの開発言語はPHPなので、データ処理の過程でJSONとPHPの連携、つまりデータ変換を利用する必要があります。

ここでは主に、JSONと配列(Array)を相互変換する2つの方法を紹介します。
json_encode()
JSONはUTF-8エンコードの文字しか受け付けないため、json_encode() の引数はUTF-8でエンコードされていなければなりません。そうでない場合、空文字列または null が返されます。中国語で GB2312 エンコードを使用する場合は、この点に特に注意してください!
例1(配列)
<?php
$array_a =array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($array_a);
?>
出力
{"a":1,"b":2,"c":3,"d":4,"e":5}
例2(オブジェクト)
<?php
$obj->body = 'another post';
$obj->id = 21;
$obj->approved = true;
$obj->favorite_count = 1;
$obj->status = NULL;
echo json_encode($obj);
?>
出力
{
"body":"another post",
"id":21,
"approved":true,
"favorite_count":1,
"status":null
}
json_decode()
この関数はJSONテキストを対応するPHPデータ構造に変換するために使用します。通常、json_decode() は配列ではなく、常にPHPオブジェクトを返します。
例3
<?php
$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json));
?>
出力
object(stdClass)#1 (5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
PHPの連想配列を強制的に生成したい場合は、json_decode() に true という引数を追加する必要があります。
例4
<?php
$json ='{"a":1,"b":2,"c":3,"d":4,"e":5}';
var_dump(json_decode($json,true));
?>
出力
array(5) {
["a"] => int(1)
["b"] => int(2)
["c"] => int(3)
["d"] => int(4)
["e"] => int(5)
}
また、JSONはオブジェクト(object)と配列(array)のみを表現できます。文字列または数値に対して json_decode() を使用すると、null が返されます。