2016-12-27 10 views
0

Keine Ahnung, warum dies nicht konvertieren wird, würde ich annehmen, dass es etwas mit der Zeichenfolge zu tun haben, aber ich bekomme NP-Ausgabe.Convert JSON String in PHP assoziative Array

$string = '[{title : "Comp 1 Product",columns : ["Our Vehicle","Features","Their Vehicle"], items : [["dcq","adv","asdvasdv"],["sdv","sdv","sdv"]]},{title : "qwefqw",columns : ["Section 1","Features","Section 2"],items : [["qqwec","qwe","qwegqwev"]]}]'; 

print_r(json_decode($string), true); 

Jede Hilfe wäre willkommen!

+2

Es ist kein gültiger JSON. In JSON müssen Eigenschaftsnamen in doppelte Anführungszeichen gesetzt werden. – Barmar

+1

Woher kommt diese Saite? Sie müssen die Quelle korrigieren, damit sie die JSON ordnungsgemäß erstellt. Es sollte eine JSON-Bibliothek verwenden, anstatt sie manuell zu erstellen. – Barmar

+1

Ich habe den Weg gepostet, solche Probleme zu debuggen und zu identifizieren, was das Problem ist. Bitte korrigieren Sie an der Quelle. –

Antwort

6

Wenn Sie sehen:

<?php 
    header("Content-type: text/plain"); 
    $string = '[{title : "Comp 1 Product",columns : ["Our Vehicle","Features","Their Vehicle"], items : [["dcq","adv","asdvasdv"],["sdv","sdv","sdv"]]},{title : "qwefqw",columns : ["Section 1","Features","Section 2"],items : [["qqwec","qwe","qwegqwev"]]}]'; 
    print_r(json_decode($string), true); 
    print_r(json_last_error()); 
?> 

Der obige Code eine 4 zurückgibt, was bedeutet, JSON_ERROR_SYNTAX, die ein Syntaxfehler mit JSON ist. Wenn es mit JSON Lint geprüft, Ihre JSON wirft:

prevoew

Sie müssen es korrigieren aussehen:

[{ 
    "title": "Comp 1 Product", 
    "columns": ["Our Vehicle", "Features", "Their Vehicle"], 
    "items": [ 
     ["dcq", "adv", "asdvasdv"], 
     ["sdv", "sdv", "sdv"] 
    ] 
}, { 
    "title": "qwefqw", 
    "columns": ["Section 1", "Features", "Section 2"], 
    "items": [ 
     ["qqwec", "qwe", "qwegqwev"] 
    ] 
}] 

Was Sie jetzt haben, ist ein JavaScript-Objekt und kein gültig JSON!

+2

Ich war dabei, dies zu posten :) +1 – Farkie

+0

@Farkie Thanks mate ...':) ' –

0

Abgesehen von ungültigen JSON, print_r(json_decode($string), true); druckt nichts, aber gibt den Wert zurück. Um das Ergebnis zu erhalten, um die Ausgabe gedruckt, müssen Sie entweder:

print_r(json_decode($string)); 

oder

echo print_r(json_decode($string), true); 

Erstere besser ist.