J'ai fait un test très rapide :
$a = array(
'id' => 152,
'another' => 'test',
'ananother' => 456,
);
$json = json_encode($a);
echo $json;
Cela ressemble à ce que vous décrivez, si je ne me trompe pas ?
Et j'obtiens comme résultat :
{"id":152,"another":"test","ananother":456}
Donc, dans ce cas, les entiers n'ont pas été convertis en chaîne de caractères.
Cependant, cela peut dépendre de la version de PHP que nous utilisons : quelques bugs liés à json_encode ont été corrigés, selon la version de PHP...
Ce test a été effectué avec PHP 5.2.6 ; j'obtiens la même chose avec PHP 5.2.9 et 5.3.0 ; je n'ai pas d'autre version 5.2.x à tester, cependant :-(
Quelle version de PHP utilisez-vous ? Ou bien votre test-case est-il plus complexe que l'exemple que vous avez posté ?
Peut-être un rapport de bug sur http://bugs.php.net/ pourraient être liées ? Par exemple, Bogue n° 40503 : La conversion des entiers de json_encode est incohérente avec PHP. ?
Peut-être Bogue n° 38680 pourrait vous intéresser aussi, d'ailleurs ?
0 votes
Il s'avère que c'est un problème spécifique à une version. Parfois, une extraction d'une base de données MySql maintient les types corrects. Dans les versions plus anciennes, elle peut tout renvoyer sous forme de chaîne. J'ai écrit à ce sujet ce matin. shakyshane.com/blog/output-json-from-php.html
1 votes
J'avais le même problème et j'ai pu le résoudre en utilisant les mutateurs de Laravel dans le modèle. Cela vous permet de modifier les valeurs dans le modèle. laravel.com/docs/eloquent#accessoires-et-mutateurs Je n'ai pas tout compris au début, mais cette question m'a aidé : stackoverflow.com/questions/16985656/