PHPでJSONをオブジェクト毎にアクセスする方法について

PHPでJSONをオブジェクト毎にアクセスする方法について、教えてください。
2014-05-08 14:53 コメント

ベストアンサー

1

iQi - 面白いアプリを開発中

{ 賛成 }: Lubo

この内容をresponse.jsonというファイルを作って、ファイルの内容を以下のようにしておきます。

response.json

{
"name":"アイスケット",
"address":"神奈川県",
"work":{
    "program":"PHP",
    "design":"CSS",
    "database":"MySQL"
}
}


次にPHPですが、先ほどのresponse.jsonと同じフォルダにPHPファイルを作ってください。

<?php
// ファイルからJSONを読み込み
$json = file_get_contents("response.json");

// 文字化けするかもしれないのでUTF-8に変換
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');

// オブジェクト毎にパース
// trueを付けると連想配列として分解して格納してくれます。
$obj = json_decode($json, true);

// パースに失敗した時は処理終了
if ($obj === NULL) {
return;
}

// 表示
// アイスケット
echo $obj['name'];

// 表示
// PHP
echo $obj['work']['program'];
?>


上記の例は連想配列でパースしたものですが、オブジェクト形式のまま返す方法もあります。先程と違うのはjson_decode関数にtrueを付けないところと、オブジェクトへのアクセスが波括弧となるところです。

<?php
// ファイルからJSONを読み込み
$json = file_get_contents("response.json");

// 文字化けするかもしれないのでUTF-8に変換
$json = mb_convert_encoding($json, 'UTF8', 'ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');

// オブジェクト毎にパース
// trueを付けないとオブジェクトとしてアクセスして格納してくれます。
$obj = json_decode($json);

// パースに失敗した時は処理終了
if ($obj === NULL) {
return;
}

// 表示
// アイスケット
echo $obj->{'name'};

// 表示
// PHP
echo $obj->{'work'}->{'program'};
?>
2014-05-08 14:56 コメント
0

Lubo - PHP言語が得意です

{ 賛成 }:

$arr = json_decode($json, true);

or

$obj = json_decode($json);
2014-05-08 18:25 コメント

ログインまたは登録してから回答してください

lujian
lujian

Javaが得意です。

@ステータス

  • 更新: 2014-05-08 18:30
  • 閲覧: 3713
  • フォロー: 3
EXIT フルスクリーンモード 回答
  • タイトル / Bold / Italics
  • CODE
  • リンク / 画像 / 動画
  • リスト / クォート(引用)

内容が多い場合、タイトル :

## 大タイトル 
### 小さいタイトル

Italics / Bold :

**Bold** 
*Italics*
***Italics And Bold***

Code :

{{{
this is a php code.
}}}

リンク :

[リンク文字](Link) 例: [Google](http://www.google.co.jp)

画像 :

![画像備考](画像Link) 例: ![Yahoologo](http://k.yimg.jp/images/mht/2014/0206_sochi_cur.png)

動画 :

!![動画備考](動画Link) 例: !![Youtube動画](http://youtube.jp)

リスト(Sort) :

1. 123
2. 123
3. 123

リスト :

- 123
- 123
- 123

クォート(引用) : ( Returnを二回押すと、クォート(引用)を終了する )

> クォート
クォート
クォート