要在 Command line 讀取 JSON, 一時找不到可以直接讀取的 Library, 所以就先用 PHP 寫一個來頂.
物件轉換成陣列使用的函式
PHP 使用 json_decode 預設是會回傳物件, 但是物件拿來作 foreach 的處理有點麻煩, 所以需要 Object to Array 的轉換程式.
CLI 的 JSON Reader PHP 版程式
讀取 CLI 參數, 可用 fgets(STDIN); 或 fgets(fopen('php://stdin', 'r')); 來抓取.
// json_file content:
// {"version":1.0,"url":"http://tw.yahoo.com"}
// Usage:
// cat json_file | php read_json.php
$stdin = get_object_vars(json_decode(fgets(STDIN)));
foreach ($stdin as $k => $v) {
echo "$k = /"$v/"/n"; // print json_decode key => value.
}
?>
但是這個是 JSON 只有一層物件的狀況, 那多層物件的狀況, get_object_vars() 就不太夠用.
function std_class_object_to_array($stdclassobject)
{
$_array = is_object($stdclassobject) ? get_object_vars($stdclassobject) : $stdclassobject;
foreach ($_array as $key => $value) {
$value = (is_array($value) || is_object($value)) ? std_class_object_to_array($value) : $value;
$array[$key] = $value;
}
return $array;
}
// print_r(std_class_object_to_array(json_decode($json_str)));
?>
上述 PHP JSON Reader 的程式, 就只需要將 get_object_vars() 換成 std_class_object_to_array() 即可.
另外, 上述的程式看看就好, 不需要去用. XD