PHPでJSONを使う場合について、まとめます。
前提
前提は次の通りとします。
太郎と次郎がいて、それぞれidとnameを持っています。
次郎には子供がいて(春子、夏子)、それぞれnameを持っています。
太郎 | 次郎 | |||||||
---|---|---|---|---|---|---|---|---|
id | 1 | 2 | ||||||
name | taro | jiro | ||||||
child | なし |
|
一つずつ代入
これを$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";
$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を使う場合は次の通りです。
カンマで区切って引数にセットすると配列になります。
「=>」を使うと連想配列になります。
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"
}]
}]
"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);
$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);
$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);
コメント
[…] これだけでJSON形式の文字列を連想配列に取り込むことができます。 ポイントは第2引数です。指定しないとオブジェクト形式になります。「TRUE」を指定すると連想配列になります。 私は連想配列の方が使いやすいので「TRUE」を指定します。 詳しくはYou Look Too Cool » PHPでJSONを使うを参考にしてください。 […]
[…] これだけでJSON形式の文字列を連想配列に取り込むことができます。 ポイントは第2引数です。指定しないとオブジェクト形式になります。「TRUE」を指定すると連想配列になります。 私は連想配列の方が使いやすいので「TRUE」を指定します。 詳しくはYou Look Too Cool » PHPでJSONを使うを参考にしてください。 […]