que he hecho una prueba muy rápida:
$a = array(
'id' => 152,
'another' => 'test',
'ananother' => 456,
);
$json = json_encode($a);
echo $json;
Ésta parece ser como lo que se describir, si no estoy equivocado?
y me estoy poniendo como salida:
{"id":152,"another":"test","ananother":456}
Por lo tanto, en este caso, los números enteros no han sido convertidos en cadena.
Sin embargo, esto podría ser dependiente de la versión de PHP que estamos utilizando: ha habido un par de errores relacionados con json_encode corregido, dependiendo de la versión de PHP ...
Esta prueba se ha hecho con PHP 5.2.6; Estoy obteniendo lo mismo con PHP 5.2.9 y 5.3.0; No tengo otra versión 5.2.x para probar con, aunque :-(
¿Qué versión de PHP está usando? ¿O es su caso de prueba más compleja que el ejemplo que has publicado?
Tal vez uno informe de error http://bugs.php.net/ podría estar relacionado? Por ejemplo, Bug #40503 : json_encode integer conversion is inconsistent with PHP?
Tal Bug #38680 podría interesarle también, por cierto?
Estaba teniendo el mismo problema y pude resolver el mío utilizando los mutadores de Laravel en el modelo. Te permite modificar los valores en el modelo. http://laravel.com/docs/eloquent#accessors-and-mutators Al principio no lo entendí del todo, pero esta pregunta me ayudó: http://stackoverflow.com/questions/16985656/laravel-problems-with- mutators – Jazzy
Resulta que este es un problema específico de la versión. A veces, un tirón de una base de datos MySql mantendrá los tipos correctos. En versiones anteriores, puede devolver todo como una cadena. Lo escribí esta mañana. http://shakyshane.com/blog/output-json-from-php.html – shane