[RESOLU] La fonction json_decode() retourne NULL??

Petit nouveau ! | 8 Messages

28 nov. 2013, 13:54

Bonjour,
Je suis un nouveau membre
J'ai un sérieux problème avec la fonction json_decode().
Il me retourne NULL quand je lui transmet mon fichier json.
Au faite il n'arrive pas à extraire le contenu du fichier json que je lui passe.
SOS aide s'il vous plait.
Voila mon fichier json:

Code : Tout sélectionner

{"orders":[{"id_commande":44,"date":"2013-11-26T10:30:00","status":"Waiting","customerName":"ok","delivery":"ok","deliveryCompanyName":"Mp","deliveryAddress" Rennequin ","deliveryPostcode":"75","deliveryCity":"Paris","deliveryCountry":"France","billingName":"B S","billingCompanyName":"Mp","billingAddress":"Rennequin ","billingPostcode":"750","billingCity":"Paris","billingCountry":"France","products":[{"image":"products_no_image_Medium.jpg","title":"Bracelet","brand":"HIPANEMA","quantity":1.0,"price":15,"productId":24,"offerId":13}],"totalPrice":15,"productsCount":1},{"id_commande":4462,"date":"2013-11-26T10:35:00","status":"Waiting","customerName":"BS","deliveryName":"B","deliveryCompanyName":"Mp","deliveryAddress":"ok","deliveryPostcode":"75","deliveryCity":"Paris","deliveryCountry":"France","billingName":"BS","billingCompanyName":"Mp","billingAddress":"ok ","billingPostcode":"75","billingCity":"Paris","billingCountry":"France","products":[{"image":"products_no_image_Medium.jpg","title":"Tropez","brand":"HIPA","quantity":2.0,"price":15,"productId":25,"offerId":133522}],"totalPrice":300,"productsCount":2}],"recordsReturned":2,"totalRecords":2,"startIndex":1,"sort":0,"pageIndex":1,"pageSize":50}

Je récupère le contenu du fichier avec file_get_contents() et je l'affecte a la variable $data.
$valeur=json_decode($data,true);
var_dump($valeur);// on m'affiche NULL
Pourtant la structure de mon fichier json est correcte.(sur http://www.functions-online.com/json_decode.html il m'affiche correctement le résultat).

Présentement je suis bloqué j'ai vraiment besoin de votre soutient.
Merci
Modifié en dernier par moogli le 28 nov. 2013, 14:49, modifié 2 fois.
Raison : bbcode

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

28 nov. 2013, 14:45

salut,

ton json n'est pas valide (3 erreurs).

tu peux tester, par exemple, sur ce site il a l'avantage de te formater le code de façon lisible et de t'indiquer les erreurs ;)
(même chose sur le site que tu indique).
nous n'avons le "bon code" json?

Code : Tout sélectionner

{ "orders":[ { "id_commande":44, "date":"2013-11-26T10:30:00", "status":"Waiting", "customerName":"ok", "delivery":"ok", "deliveryCompanyName":"Mp", "deliveryAddress" Rennequin ", "deliveryPostcode":"75", "deliveryCity":"Paris", "deliveryCountry":"France", "billingName":"B S", "billingCompanyName":"Mp", "billingAddress":"Rennequin ", "billingPostcode":"750", "billingCity":"Paris", "billingCountry":"France", "products":[ { "image":"products_no_image_Medium.jpg", "title":"Bracelet", "brand":"HIPANEMA", "quantity":1.0, "price":15, "productId":24, "offerId":13 } ], "totalPrice":15, "productsCount":1 }, { "id_commande":4462, "date":"2013-11-26T10:35:00", "status":"Waiting", "customerName":"BS", "deliveryName":"B", "deliveryCompanyName":"Mp", "deliveryAddress":"ok", "deliveryPostcode":"75", "deliveryCity":"Paris", "deliveryCountry":"France", "billingName":"BS", "billingCompanyName":"Mp", "billingAddress":"ok ", "billingPostcode":"75", "billingCity":"Paris", "billingCountry":"France", "products":[ { "image":"products_no_image_Medium.jpg", "title":"Tropez", "brand":"HIPA", "quantity":2.0, "price":15, "productId":25, "offerId":133522 } ], "totalPrice":300, "productsCount":2 } ], "recordsReturned":2, "totalRecords":2, "startIndex":1, "sort":0, "pageIndex":1, "pageSize":50 }
@+
Il en faut peu pour être heureux ......

Petit nouveau ! | 8 Messages

28 nov. 2013, 15:16

Merci.
Au faite j'avais mal copier le contenu de mon fichier json et grâce au site j'ai pu détecte et corrigé les erreurs.
Cependant le même problème persiste toujours.
J'ai toujours un NULL comme retour.
Par contre quand je copie directement le contenu du fichier json dans la fonction json_decode() en prenant bien sûre le soin de mettre le contenu entre uniquote ' contenu fichier json ' sinon ça ne ça marche pas.

$data =json_decode('{
"orders":[
{
"id_commande":44,
"date":"2013-11-26T10:30:00",
"status":"Waiting",
"customerName":"ok",
"delivery":"ok",
"deliveryCompanyName":"Mp",
"deliveryAddress":"Rennequin ",
"deliveryPostcode":"75",
"deliveryCity":"Paris",
"deliveryCountry":"France",
"billingName":"B S",
"billingCompanyName":"Mp",
"billingAddress":"Rennequin ",
"billingPostcode":"750",
"billingCity":"Paris",
"billingCountry":"France",
"products":[
{
"image":"products_no_image_Medium.jpg",
"title":"Bracelet",
"brand":"HIPANEMA",
"quantity":1.0,
"price":15,
"productId":24,
"offerId":13
}
],
"totalPrice":15,
"productsCount":1
},
{
"id_commande":4462,
"date":"2013-11-26T10:35:00",
"status":"Waiting",
"customerName":"BS",
"deliveryName":"B",
"deliveryCompanyName":"Mp",
"deliveryAddress":"ok",
"deliveryPostcode":"75",
"deliveryCity":"Paris",
"deliveryCountry":"France",
"billingName":"BS",
"billingCompanyName":"Mp",
"billingAddress":"ok ",
"billingPostcode":"75",
"billingCity":"Paris",
"billingCountry":"France",
"products":[
{
"image":"products_no_image_Medium.jpg",
"title":"Tropez",
"brand":"HIPA",
"quantity":2.0,
"price":15,
"productId":25,
"offerId":133522
}
],
"totalPrice":300,
"productsCount":2
}
],
"recordsReturned":2,
"totalRecords":2,
"startIndex":1,
"sort":0,
"pageIndex":1,
"pageSize":50
}',true);
var_dump($data); //on affiche correctement le résultat

Pourtant moi ce que je veux c'est de pouvoir récupérè le contenu du fichier json et l'affecte à une variable ($data) et ensuite le passè a la fonction
json_decode().Dans se cas la fonction retourne NULL.
$data=file_get_contents("test.json");
$val=json_decode($data,true);
var_dump($val);// retourne Null

Comment faire?
Merci

ViPHP
xTG
ViPHP | 7331 Messages

28 nov. 2013, 17:10

Encodage du fichier ? ;)

Petit nouveau ! | 8 Messages

28 nov. 2013, 18:04

Pardon est ce que tu peut être un peu explicite.Je ne comprend pas ce que tu me demande.
Mon fichier est au format json.
Le problème est que quand je récupère le contenu du fichier avec file_get_contents() et que je le transmet à la fonction json_decode() elle retourne NULL comme résultat.

$data=file_get_contents("fichier.json");
$data=utf8_encode($data);
$val=json_decode($data,true);
var_dump($data);//affiche NULL
J'ai utilisé des fonctions comme utf8_encode(), mais le résultat reste le même.

ViPHP
xTG
ViPHP | 7331 Messages

28 nov. 2013, 19:07

Il faudrait savoir avec quel encodage ton fichier json a été enregistré (faisable avec notepad++ par exemple).
Ensuite il faut savoir avec quel encodage ton PHP est configuré.
Et enfin savoir que json_decode ne fonctionne qu'avec des chaînes UTF-8.

J'en conclue au moins une chose avec tes retours.
C'est que le script php est enregistré en utf-8 puis que le décodage fonctionne si tu copies/colle le json dedans.

Des pistes ici : faq-tutoriels/encodage-utf-t245062.html

Petit nouveau ! | 8 Messages

29 nov. 2013, 16:04

Merci beaucoup pour ton aide.
Grâce au tuto et à tes conseils j'ai fais les configurations(j'utilise notepade ++ comme éditeur et j'ai activé l'option utf8, le contenu de mon fichier est déjà en utf8 puis ce que je fais le teste avec la fonction mb_detecte_encoding() qui retourne utf8) possibles concernant l'encodage utf8.
Mais le problème est que le résultat reste le mêmehttp://forum.phpfrance.com/posting.php?mode=reply&f=8&t=269697# (retourne toujours null).
Je ne sais plus quoi faire?
Une fois de plus je tiens à te remercié pour ton aide.
a+

ViPHP
xTG
ViPHP | 7331 Messages

29 nov. 2013, 16:16

Le problème avec cette fonction c'est que tu as plusieurs cas d'échec mais qu'on sait pas lequel a triggué...
Tu peux faire le test en supprimant des parties de ton json pour espérer trouver une portion qui lui pose problème.
Mais j'y crois moyen.
Je n'ai pas d'autres idées.

Petit nouveau ! | 8 Messages

29 nov. 2013, 18:16

Merci.

Mammouth du PHP | 2278 Messages

30 nov. 2013, 10:50

J'ai eu de problèmes analogues avec d'autres fonctions (sans rapport avec json, mais sait-on?) liées aux fins de lignes et aux fins de chaîne dans laquelle était stocké le fichier.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD