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を作成せよ。