PHPのオブジェクトをJSONに変換

PEARとかめんどくさかったので自分で書いた。文字列、真偽値、数値、配列、連想配列に対応しています。それ以外は null としています。

<?php

function toJson($data)
{
    if (is_string($data)) {
        return '"' . str_replace(array('\\', '"', "\n"), array('\\\\', '\\"', '\\n'), $data) . '"';
    }
    elseif (is_bool($data)) {
        return ($data) ? 'true' : 'false';
    }
    elseif (is_numeric($data)) {
        return '' . $data;
    }
    elseif (is_array($data)) {
        // 配列
        if (array_keys($data) === range(0, count($data) - 1)) {
            $a = array();
            foreach ($data as $value) {
                $a[] = toJson($value);
            }
            return '[' . implode(',', $a) . ']';
        }
        // 連想配列
        else {
            $a = array();
            foreach ($data as $key => $value) {
                $a[] = toJson('' . $key) . ':' . toJson($value);
            }
            return '{' . implode(',', $a) . '}';
        }
    }
    else {
        return 'null';
    }
}

参考