PHPでJSONを使う

PHPでJSONを使う場合について、まとめます。

前提

前提は次の通りとします。
太郎と次郎がいて、それぞれidとnameを持っています。
次郎には子供がいて(春子、夏子)、それぞれnameを持っています。

太郎 次郎
id 1 2
name taro jiro
child なし
春子 夏子
name haruko natsuko

一つずつ代入

これを$personsという変数に代入するときは次の通りです。

$persons[0]["id"] = "1";
$persons[0]["name"] = "taro";
$persons[1]["id"] = "2";
$persons[1]["name"] = "jiro";
$persons[1]["child"][0]["name"] = "haruko";
$persons[1]["child"][1]["name"] = "natsuko";

arrayを使う

arrayを使う場合は次の通りです。
カンマで区切って引数にセットすると配列になります。
「=>」を使うと連想配列になります。

$persons=array(
  array(
    "id" => "1",
    "name" => "taro"
  ),
  array(
    "id" => "2",
    "name" => "jiro",
    "child" => array(
      array(
        "name" => "haruko"
      ),
      array(
        "name" => "natsuko"
      )
    )
  )
);

JSONを使う

JSON形式

次のような形式のデータをJSONと言います。
一つのレコードを{}で括ります。それぞれが連想配列になります。内容は「キー:値」という組合せにして、それぞれダブルクォーテーションで括ります。
これらをカンマで区切り、[]で括ります。インデックスが0から始まる配列になります。

[{"id":"1","name":"taro"},{"id":"2","name":"jiro","child":[{"name":"haruko"},{"name":"natsuko"}]}]

適当に改行すると次のようになります。

[{
  "id": "1",
  "name": "taro"
}, {
  "id": "2",
  "name": "jiro",
  "child": [{
    "name": "haruko"
  }, {
    "name": "natsuko"
  }]
}]
json_decode

JSON形式のデータはそのままではただの文字列ですので、これを変数に代入します。
json_decodeを使います。
配列変数として使うには第2引数を「TRUE」にします。

$json='[{"id":"1","name":"taro"},{"id":"2","name":"jiro","child":[{"name":"haruko"},{"name":"natsuko"}]}]';
$persons=json_decode($json, TRUE);

json_encodeでJSON形式の文字列を作る

JSONは扱いが簡単ですが、いざ、JSON形式のデータ(文字列)を作るとなると括弧で括ったりするなど、面倒です。
しかしjson_encodeを使うと簡単にJSON形式の文字列に作れます。
引数に配列変数を与えるだけです。

$persons[0]["id"] = "1";
$persons[0]["name"] = "taro";
$persons[1]["id"] = "2";
$persons[1]["name"] = "jiro";
$persons[1]["child"][0]["name"] = "haruko";
$persons[1]["child"][1]["name"] = "natsuko";
$json=json_encode($persons);

コメント

  1. […] これだけでJSON形式の文字列を連想配列に取り込むことができます。 ポイントは第2引数です。指定しないとオブジェクト形式になります。「TRUE」を指定すると連想配列になります。 私は連想配列の方が使いやすいので「TRUE」を指定します。 詳しくはYou Look Too Cool » PHPでJSONを使うを参考にしてください。 […]

  2. […] これだけでJSON形式の文字列を連想配列に取り込むことができます。 ポイントは第2引数です。指定しないとオブジェクト形式になります。「TRUE」を指定すると連想配列になります。 私は連想配列の方が使いやすいので「TRUE」を指定します。 詳しくはYou Look Too Cool » PHPでJSONを使うを参考にしてください。 […]

タイトルとURLをコピーしました