2017-06-06 4 views
2

Ich habe JSON-Objekt, das ich codiert haben wie sojson_decode funktioniert nicht auf meinem String

{ 
"id": "", 
"steps": [ 
      { 
     "target": "purchase_order_items_itemmaster_id", 
     "title": "", 
     "placement": "", 
     "content": "", 
     "xoffset": "", 
     "yoffset": "" 
       } 
     ] 
} 
$JSONData = json_encode($finalData,JSON_PRETTY_PRINT); 

ich diese JSON-Daten nehme und sie in einer Datei wie so

File::put("path","var tour = \n [ \n\t $JSONData \n ];"); 

zu speichern, die etwa wie folgt aussieht in der Datei

var tour = 
[ 
    { 
    "id": "", 
    "steps": [ 
     { 
      "target": "purchase_order_items_itemmaster_id", 
      "title": "", 
      "placement": "", 
      "content": "", 
      "xoffset": "", 
      "yoffset": "" 
     } 
    ] 
} 
]; 

nun wie so

bildet die zweite Linie zurücklese ich es
[ 
    { 
    "id": "", 
    "steps": [ 
     { 
      "target": "purchase_order_items_itemmaster_id", 
      "title": "", 
      "placement": "", 
      "content": "", 
      "xoffset": "", 
      "yoffset": "" 
     } 
    ] 
} 
]; 

Das Problem ist, wenn ich sie entschlüsseln will es geschieht nicht zurück, das ist, wie ich zu tun versuchen, dass,

$lines = file_get_contents("path",NULL,NULL,10); 

$a = json_decode($lines); 

Nun ist das $ a sollte erwartete Ausgabe hat nach dem dekodierte Daten, aber es hat null.

Kann jemand auf den Fehler hinweisen?

+0

http : //php.net/manual/en/function.json-las t-error.php was wird gedruckt? – varuog

Antwort

2

den zweiten Parameter übergeben true zum rekursiven Decodierung

$a = json_decode(chop($lines,";"),true); 

Überprüfung der php mannual hier json_decode

+0

schon versucht, dass, funktioniert nicht! –

+0

@UsamaRehan Ich habe meine Antwort bearbeitet, bitte versuchen Sie dies –

1

Es wird

$str = file_get_contents('http://example.com/example.json/'); 
$json = json_decode($str, true); // decode the JSON into an associative array 

Siehe Beitrag Parsing JSON file with PHP

+0

schon versucht, das funktioniert nicht! –

3

Ich glaube, das Problem ist das Semikolon am Ende des JSON, das Sie aus der Datei zurückgelesen haben. Versuchen Sie das Abhacken vor json_decode Versuch:

$a = json_decode(rtrim($lines, ";")); 
+0

yeah ungültige JSON-Daten können Ursache für json_decode Fehler sein –

1

try wie

$fp = fopen('path', 'w'); 
fwrite($fp, json_encode($JSONData)); //if $JSONData is in string 
fclose($fp); 

Daten in der Datei zu speichern, statt

File::put("path","var tour = \n [ \n\t $JSONData \n ];"); 

// und lesen sich wie

// Read JSON file 
$json = file_get_contents('path'); 

//Decode JSON 
$json_data = json_decode($json,true); 

//Print data 
print_r($json_data); 
Verwandte Themen