2016-03-28 8 views
-1

Ich habe JSON.stringify verwendet, um ein JSON-Objekt in eine Zeichenfolge zu konvertieren, in einer Datenbank zu speichern und abzurufen. Wenn ich versuche, es mit json_decode() in json zu decodieren, gibt es NULL zurück (ich habe var_dump() verwendet, um es zu verifizieren).Eine der beiden JSON-Zeichenfolgen, die identisch aussehen, konnte nicht analysiert werden.

{"profilediv":" klsadnlksa ","profilediv2":" sankldnlkas ","profilediv3":" nsjakdnsjka "} 

{"profilediv":"nsjakdnsjka","profilediv2":"sankldnlkas","profilediv3":"klsadnlksa"} 

Ich bin in der Lage, die zweite Zeichenfolge zu analysieren, aber nicht die erste. Hier der gesamte Code.

<?php 
$x = '{"profilediv":" 

klsadnlksa 

","profilediv2":" 

sankldnlkas 

","profilediv3":" 

nsjakdnsjka 

"}'; 
$x = trim($x); 
$y = json_decode($x,true); 
var_dump($y); 
$json = '{"profilediv":"nsjakdnsjka","profilediv2":"sankldnlkas","profilediv3":"klsadnlksa"}'; 
var_dump(json_decode($json)); 
?> 

Und hier ist der Ausgang

NULL object(stdClass)#1 (3) { ["profilediv"]=> string(11) "nsjakdnsjka" ["profilediv2"]=> string(11) "sankldnlkas" ["profilediv3"]=> string(10) "klsadnlksa" } 

ich in der Lage bin $ json zu analysieren, aber nicht x $. Jede Hilfe wird geschätzt. Vielen Dank im Voraus.

+1

Entfernen Sie die Zeilenumbrüche, sie die JSON ungültig machen. –

+0

Ich habe trim für diesen Zweck verwendet. Überprüfen Sie den ersten Codeblock in der Frage, beide Strings sehen fast gleich aus. – handle

+0

'trim()' schneidet nichts von dieser Zeichenfolge ab. Nur der Anfang und das Ende. – AbraCadaver

Antwort

0

Fügen Sie diese neuen Linien

$x = str_replace("\n",'',$x); 
$y = json_decode($x,true); 

sein wird var_dump ed zu entfernen, wie:

Array 
(
    [profilediv] => klsadnlksa 
    [profilediv2] => sankldnlkas 
    [profilediv3] => nsjakdnsjka 
) 

trim - Entfernt Leerraum (oder andere Zeichen) vom Anfang und Ende einer Zeichenkette

+0

Ich habe trim für diesen Zweck verwendet. Überprüfen Sie den ersten Codeblock in der Frage, beide Strings sehen fast gleich aus. – handle

+0

aber es scheint nicht den Job zu machen. Probieren Sie das aus und lassen Sie es mich wissen. Ich habe es ausprobiert und es funktioniert. –

+0

mach '$ x = trimmen ($ x); print_r ($ x); 'und du wirst sehen, dass es nicht so funktioniert. Trim entfernt nur Zeichen vom Anfang und vom Ende. Nicht in der Zwischenzeit –

0
function json_decode_with_new_lines($json, $assoc = TRUE){ 
    $json = str_replace("\n", "\\n", $json); 
    $json = str_replace("\r", "", $json); 
    return json_decode($json, $assoc); 
} 

ausgegeben geben:

Array 
(
    [profilediv] => 

klsadnlksa 


    [profilediv2] => 

sankldnlkas 


    [profilediv3] => 

nsjakdnsjka 


) 
Verwandte Themen