2016-03-23 9 views
1

Ich habe eine .txt-Datei ‚test.txt‘ genannt, die ein JSON-Array ist wie folgt:Decode JSON PHP

[{"email":"[email protected]","createdate":"2016-03-23","source":"email"}] 

Ich versuche, PHP zu verwenden, um diesen JSON-Array zu entschlüsseln, damit ich schicken Meine Informationen werden zur Erfassung in meine E-Mail-Datenbank übertragen. Ich habe eine PHP-Datei mit diesem Code erstellt:

<?php 

$url = 'http://www.test.com/sweeps/test.txt'; 
$content = file_get_contents($url); 
$json = json_decode($content,true); 

echo $json; 


?> 

Aus irgendeinem Grund ist es nicht Echo der entschlüsselten JSON, wenn ich meine PHP-Seite besuchen. Gibt es einen Grund dafür und kann jemand etwas Licht abwerfen? Vielen Dank!

+1

Es ist nicht JSON nach dekodieren, es ist ein PHP-Array: 'print_r ($ json);' und/oder Schleife darüber und echo die Elemente. – AbraCadaver

+1

'$ foo = Array ('a', 'b'); echo $ foo' gibt das Literalwort 'Array' aus, nicht den Inhalt des Arrays. Sie können Arrays nicht direkt echo/drucken. –

+0

Dieser JSON-Zeichenfolge fehlt ein Zitat im Feld "E-Mail". Fix das, und es dekodiert einfach gut. – Eihwaz

Antwort

1

Sie verwenden echo Skalarvariablen wie

$x = 'Fred'; 
echo $x; 

zu drucken, ein Array zu drucken oder Sie

$array = [1,2,3,4]; 
print_r($array); 

Als json_decode() verwenden print_r() oder var_dump() Objekt nimmt einen JSON-String und wandelt es in eine PHP-Array oder Objekt verwenden print_r() zum Beispiel.

Auch wenn die json_decode() aus irgendeinem Grund fehlschlägt gibt es eine Funktion zum Drucken der Fehlermeldung zur Verfügung gestellt.

<?php 
$url = 'http://www.test.com/sweeps/test.txt'; 
$content = file_get_contents($url); 
$json = json_decode($content,true); 

if (json_last_error() !== JSON_ERROR_NONE) { 
    echo json_last_error_msg(); 
    exit; 
} 
+0

Danke. Gibt es einen Grund, warum var_dump NULL anzeigt und print_r nichts zeigt? Meine aktuellen JSON-Einträge von woobox finden Sie hier: http://pastebin.ca/3409494 – chronotrigga

+0

Wenn Sie diese JSON-Zeichenkette durch [den Json-Lint-Validator] (http://jsonlint.com) ausführen, werden Sie sehen, dass es kein gültiger JSON ist . Oder verwende den 'json_last_error()' Code, den ich der Antwort hinzugefügt habe – RiggsFolly

1

Sie müssen diese JSON-Zeichenfolge in zwei separate JSON-Zeichenfolgen aufteilen (nach dem von Ihnen bereitgestellten Pastebin). Suchen Sie nach "] [", brechen dort und versuchen, sich mit einem der Teile, die Sie am Ende mit:

$tmp = explode('][', $json_string); 

if (!count($tmp)) { 
    $json = json_decode($json_string); 

    var_dump($json); 
} else { 
    foreach ($tmp as $json_part) { 
     $json = json_decode('['.rtrim(ltrim($json_string, '['), ']').']'); 

     var_dump($json); 
    } 
}