Garder type de données php/mysql en json

ZMEX Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   -  
Giorgiolino Messages postés 253 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

j'essaie de transformer des données issues de mysql en json.
j'y arrive grâce à json_encode()
mais je ne sais pas comment garder le type de mes données, parce que le json généré est tout en string.

{"NUMCLI":"2","NOM":"hero","PRENOM":"tif","ADRESSE":"23 rue delarue","CP":"92000","ville":"clamart"}


mon code est comme suit :
<?php
echo "<hr>";
   $tablo = array();
   $sql="SELECT * FROM client";
   $res = $idcom->query($sql);

while ($lig = $res ->fetch_assoc()) {
   foreach($lig as $champs => $valeur)
    $tablo[$champs] = $valeur ;
   }//fin du while
print_r($tablo);
echo "<br>";
echo json_encode($tablo);
?>


vous remarquez que mes identifiants sont entre guillemets.
Comment faire?
Je vous remercie d'avance pour votre aide.



A voir également:

1 réponse

ZMEX Messages postés 47 Date d'inscription   Statut Membre Dernière intervention   16
 
up !!
0
Giorgiolino Messages postés 253 Date d'inscription   Statut Contributeur Dernière intervention   52
 
Bonjour,

pas besoin de s'exciter de la sorte. Si tu n'as pas encore reçu de réponse c'est que personne n'a trouvé les ressources pour te répondre, alors zen.

Concernant ton problème, ci-après quelques éléments qui peuvent t'aider:

1/

If you have problems with quotes when encoding numeric data retrieved from the database, you can just cast that value to integer and there will be no quotes:

$testArr['key'] = '1';
print json_encode($testArr);

===> {"key":"1"}

$testArr['key'] = (int)'1';
print json_encode($testArr);

===> {"key":1}

Don't forget that you have to deal with numbers, otherwise your string will be converted to 0.


2/
To battle the quoting of numbers when encoding data retrieved from mysql you could do a simple preg_replace() to remove the quotes on numbers.

This has worked for me:
<?php
$json = json_encode($dataFromMysql);
$json = preg_replace('/"(-?\d+\.?\d*)"/', '$1', $json);
?>


L'ensemble peut-être retrouvé sur cette page du manuel php (qui est aussi ton ami) :
https://www.php.net/manual/fr/function.json-encode.php

Globalement, l'idée c'est de "nettoyer" les quotes autour des valeurs qui sont des nombres.


Bon courage.
0