以下は、MySQL にアクセスして json_encode で連想配列を JSON に変換して text/plain で返しています。 json.php(MySQLにアクセスして JSONを返す)
<?php
header( "Content-Type: text/plain; Charset=utf-8" );
header( "pragma: no-cache" );
header( "Expires: Wed, 31 May 2000 14:59:58 GMT" );
header( "Cache-control: no-cache" );
$server = 'localhost';
$db_name = 'lightbox';
$user = 'root';
$password = 'パスワード';
// 接続
$connect = @ new mysqli($server, $user, $password, $db_name);
if ($connect->connect_error) {
die('Connect Error (' . $connect->connect_errno . ') '
. $connect->connect_error);
}
// クエリ
$result = $connect->query("select * from 社員マスタ where 社員コード = '0001'");
if ( !$result ) {
die('クエリーに誤りがあります : ' . $connect->error );
}
// 読み出し
$row = $result->fetch_array(MYSQLI_BOTH);
// 開放
$result->close();
// 接続解除
$connect->close();
print json_encode($row);
?>
MYSQLI_BOTH で行データを読み込んでいるので、結果には 数字をキーとした配列と 文字をキーとした配列が混在しています。
Ruby で パースした場合、JSON 文字列なので、数字のキーは文字列扱いになるので、Ruby でループ処理する場合は、to_s が必要です。
force_encoding("utf-8") は、mechanize で返される文字列が、バイナリなので Ruby に対して文字コードを理解させる必要があります。これは、文字列自体には変更は起こらず、Ruby 内で問題が解決されるようにする処理です。
ここでは、実際の日本語コードは使用されていませんが、一般的に mechanize で返されるページは日本語が含まれたバイナリデータです。ページが UTF-8 ならば、force_encoding("utf-8") を実行します。
※ json_encode で、JSON_UNESCAPED_UNICODE を使うと、日本語が含まれます
json_get.rb
#JSON 経由でデータベースの値を取得
require 'mechanize'
agent = Mechanize.new
agent.verify_mode = OpenSSL::SSL::VERIFY_NONE
agent.follow_meta_refresh = true
agent.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko'
page = agent.get("http://localhost/web/various/db_json/json.php")
obj = JSON.parse((page.body).force_encoding("utf-8"))
i = 0
while i < obj.length / 2
print obj[i.to_s], "\n"
i += 1
end
print obj["社員コード"],"\n"
print obj["氏名"],"\n"
print obj["フリガナ"],"\n"
print obj["所属"],"\n"
print obj["性別"],"\n"
print obj["作成日"],"\n"
print obj["更新日"],"\n"
print obj["給与"],"\n"
print obj["手当"],"\n"
print obj["管理者"],"\n"
print obj["生年月日"],"\n"













※ エキスパートモードで表示しています
アーカイブとカテゴリページはこのように簡単に設定できますが、タグページは HTML 設定を直接変更して、以下の『タグページでのみ表示される内容』の記述方法で設定する必要があります


















