Saya telah melakukan tes yang sangat cepat:
$a = array(
'id' => 152,
'another' => 'test',
'ananother' => 456,
);
$json = json_encode($a);
echo $json;
Ini sepertinya seperti apa yang Anda gambarkan, jika saya tidak salah?
Dan saya mendapatkan sebagai output:
{"id":152,"another":"test","ananother":456}
Jadi, dalam hal ini, bilangan bulat belum dikonversi ke string.
Namun, ini mungkin tergantung dari versi PHP yang kami gunakan: ada beberapa bug terkait json_encode yang diperbaiki, tergantung pada versi PHP ...
Tes ini telah dilakukan dengan PHP 5.2.6; Saya mendapatkan hal yang sama dengan PHP 5.2.9 dan 5.3.0; Saya tidak memiliki versi 5.2.x lain untuk diuji, meskipun :-(
Versi PHP apa yang Anda gunakan? Atau apakah test case Anda lebih kompleks dari contoh yang Anda posting?
Mungkin satu laporan bug di http://bugs.php.net/ dapat dikaitkan? Misalnya, Bug # 40503: konversi integer json_encode tidak konsisten dengan PHP ?
Mungkin Bug # 38680 juga bisa membuat Anda tertarik, btw?