2013/10/1 久米
xml  | 
    json | |
| 可読性(人間) | ○ | × | 
| データ量 | × | ○少ない(約半分) | 
| 構文解析(SW) | ○ | ○ | 
 {"title":"吾輩は猫である"}
  {
  "title":"吾輩は猫である",
  "chosha":"夏目漱石",
  "price":680
  }
 {
  "book":[
  "吾輩は猫である",
  "坊ちゃん",
  "三四郎"
  ]
  }
 例 かぼちゃ 100円 在庫20個
    
    
  =======================注意==========================
  htdos>web3>121113>kinokuniya.json
  (1)jsonファイルは、文字コードはUTF-8N(UTF-8BOM無、UTF-8のみ表記の場合それはUTF-8BOM無である) 
  改行はLF 
  で保存すること
  (2)一度、異なった文字コードで書いた場合は
  全書き直し、あるいは変換ツールでUTF-8Nに変換のこと
  変換ツールは例えばKanjiTranslator
JSONのデータをPHPで読みにゆき、それを解読する(オブジェクト生成する)方法
| json | |
| メソッド | $json = file_get_contents("jsonファイル"); $obj = json_decode($json);  | 
  
| 読み取りは通常の file_get_contentsメソッドを使い オブジェクトを生成するのはjson_decodeメソッドを使う  | 
  
| json | xml再掲  | 
  |
| 記述例 | 
{
	"book":[
		{
			"ISBN":"1254000",
			"category":"小説",
			"title":"我輩は猫である",
			"price":500
		},
		{
			"ISBN":"25004000",
			"category":"小説",
			"title":"坊ちゃん",
			"price":600
		},
		{
			"ISBN":"40880500",
			"category":"漫画",
			"title":"スラムダンク",
			"price":400
		}
	]
} | 
    
<?xml version="1.0" encoding="UTF-8"?>
<yajimaya>
    <book ISBN="1254000">
        <category>小説</category>
        <title>我輩は猫である</title>
        <price>500</price>
    </book>
    <book ISBN="25004000">
        <category>小説</category>
        <title>坊ちゃん</title>
        <price>600</price>
    </book>
    <book ISBN="40880500">
        <category>漫画</category>
        <title>スラムダンク</title>
        <price>400</price>
    </book>
</yajimaya> | 
  
| 取得 表示例  | 
    <?php $json = file_get_contents("yajimaya.json"); if ($json == false) { print "保守中です"; return; } $obj = json_decode($json); $book = $obj->book; $ttl0 = $book[0]->title; $ttl1 = $obj->book[1]->title; print "$ttl0 $ttl1 \n"; ?>  | 
    
<?php
$obj = simplexml_load_file("yajimaya.xml");
if ($obj == false) {
	print "保守中です";
	return;
}
$book = $obj->book; 
$ttl0 = $book[0]->title; 
$ttl1 = $obj->book[1]->title;
print "$ttl0 $ttl1 \n"; 
?> | 
  
| 外部 URL 取得 表示例  | 
    <?php $json = file_get_contents( "http://tepco-usage-api.appspot.com/latest.json"); if ($json == false) { print "東京電力APIのサーバはダウン中"; return; } $obj = json_decode($json); $year = $obj->year; $month = $obj->month; $day = $obj->day; print "$year $month $day \n"; ?>  | 
    <?php $obj = simplexml_load_file(  | 
  
※注意 phpファイルをsimplexml_load_fileやfile_get_contentsで読む場合は
$obj =file_get_contents("yajimaya.php"); ではなく
  $obj =file_get_contents("http://・・・/yajimaya.php"); のようにapacheを通して読む
なぜなら単にyajimaya.phpだとphpソースそのものを読んでしまうため。
http://www.shogidojo.com/koshi/web3/01/json/nekokuniya.json
コラム json_decodeはPHP5.2.0から使用可能昔のPHPバージョンではjson_decodeは使えないので <?php $json = file_get_contents("http://www.shogidojo.com/php/json/win30.json"); 
  | 
  
演習1 下記の情報をxmlで表現せよ。
演習2 下記の情報をjsonで表現せよ。
演習3 上記を読み取るphpを作成せよ。