Frage

Ich habe mit einem Problem mit einem bestimmten Futter für einen Kunden raubend. Sie haben mir eine Remote-URL gegeben und die Antwort ist ein JSON-String wie folgt:

{"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"}
]}

Zum Beispiel Zwecke habe ich schrumpfte das Futter, das Format zu zeigen, aber in Wirklichkeit gibt es Hunderte von Tochtergesellschaften. Wie dem auch sei, ich will PHP json_decode verwenden, weil am Ende, ich diese verbundenen Unternehmen in einem assoziativen Array benötigen.

ich so etwas wie dies habe, aber ich am Ende nur den rohen String bekommen, und json_decode nicht wirklich in ein assoziatives Array analysieren.

$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);

Es scheint, wie ich die „\ n“ Zeichen in der Beschickung zu halten brauchen selbst, aber diese erhalten gezupft bei der Verwendung von:

file_get_contents

Wie auch immer, ich denke, Sie wissen, was ich nach, ich bin nur nicht sicher, was ich falsch mache. Ich schätze die Hilfe im Voraus. Ich habe versucht, mit Jquery mit JSONP aber es wäre ideal auf diese Weise, da ich später durch das Array müssen sortieren und es muss nicht asynchron sein.

Acorn

War es hilfreich?

Lösung

Es ist möglich, dass Ihr Feed Unicode-Text enthält. Versuchen Sie:

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

Update:

das Problem gelöst. Es gibt Fälle von \'s in den JSON-Daten, die json_decode nicht richtig handhaben. Um dies zu lösen müssen Sie die \ verdoppeln entkommen. Dies ist, was ich getan habe.

<?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);

Andere Tipps

Sie sind Daten-Feed entkommt Apostrophe (Apostroph) mit einem umgekehrten Schrägstrich (z \ '). Die JSON-Spezifikation nicht sagen, dies getan werden soll und damit PHP nicht korrekt verhalten.

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

Sie können versuchen, alle \ ersetzen 'mit':

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

vor json_decode aufrufen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top