Question

J'ai un problème avec la consommation d'un flux particulier pour un client. Ils m'ont donné une URL distante et la réponse est une chaîne JSON comme suit:

{"affiliate": [
{"ID":"1", "COUNTRY":"EXAMPLE", "NETWORK":"EXAMPLE", "PRIMARY":"EXAMPLE"},
{"ID":"2", "EXAMPLE":"EXAMPLE", "COUNTRY":"EXAMPLE", "NETWORK":"EXAMPLE", "PRIMARY":"EXAMPLE"},
{"ID":"3", "TITLE":"EXAMPLE", "COUNTRY":"EXAMPLE", "NETWORK":"EXAMPLE", "PRIMARY":"EXAMPLE"}
]}

Par exemple, j'ai réduit le flux pour afficher le format, mais en réalité, il y a des centaines d'affiliés. En tout cas, je veux utiliser PHP json_decode car, au final, j'ai besoin de ces affiliés dans un tableau associatif.

J'ai quelque chose comme ça, mais je finis par obtenir la chaîne brute, et json_decode ne l'analyse pas dans un tableau associatif.

$request_url = "http://exampleurl.com/feed"; //returns feed like above

$json = file_get_contents($request_url, true); //getting the file content

$decode = json_decode($json, true);

print_r($decode);

Il semble que j’ai besoin de conserver le " \ n " caractères dans le flux lui-même, mais ceux-ci sont supprimés lors de l'utilisation de:

file_get_contents

Quoi qu'il en soit, je pense que vous savez ce que je cherche, mais je ne suis pas sûr de ce que je fais mal. J'apprécie l'aide à l'avance. J'ai essayé d'utiliser jquery avec jsonp, mais ce serait plus idéal de cette façon, car je dois ensuite trier le tableau et il n'est pas nécessaire qu'il soit asynchrone.

Gland

Était-ce utile?

La solution

Il est possible que votre flux contienne du texte Unicode. Essayez:

$decode = json_decode(addslashes($json), true)

Mise à jour:

Résolu le problème. Il existe des instances de \ 's dans les données json que json_decode ne gère pas correctement. Pour résoudre ce problème, vous devez double échapper le \ . C'est ce que j'ai fait.

<?php
error_reporting(E_ALL);
$request_url = 'http://midas.glam.com/publisher_directory_data?network=glam&country=US&publish=Y';

$json = file_get_contents($request_url);
$json = str_replace('\\', '\\\\', $json);

$decode = json_decode($json, true);

var_dump($decode);

Autres conseils

Votre flux de données échappe aux guillemets simples (apostrophes) avec une barre oblique inverse (p. ex. \ '). La spécification JSON ne dit pas que cela devrait être fait, et donc PHP ne se comporte pas correctement.

Voir: http://bugs.php.net/bug.php?id = 42708

Vous pouvez essayer de remplacer tous les \ 'par':

$json = str_replace('\\\'', "'", $json);

avant d'appeler json_decode.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top