2016-08-09 30 views
2

Auf MySQL Ich habe dieses JSON WertWie dekodieren JSON von MYSQL PHP

{"length":1847,"data":[0,0,0,0,-46,37]} 

Auf PHP ich die "Daten" Objekte in Array String benötigen, also habe ich versucht:

$json = $row['wave']; 
$json_array = json_decode($json); 
$json_wave = $json_array["data"]; 

Es gibt mir internal server error 500, also habe ich versucht:

var_dump(json_decode($json)); 

Was ich habe ist:

object(stdClass)#7 (5) { 
    ["length"]=> 
    int(1847) 
    ["data"]=> 
    array(3694) { 
    [0]=> 
    int(0) 
    [1]=> 
    int(0) 
    [2]=> 
    int(0) 
    [3]=> 
    int(0) 
    [4]=> 
    int(-46) 
    [5]=> 
    int(37) 
    } 
} 

Ich muss Ausgang dieser String 0,0,0,0,-46,37, warum ist mein Code funktioniert nicht?

+2

Sekunden hinzufügen Parameter TRUE in '$ json_array = json_decode ($ json, TRUE);' Um ein assoziatives Array zu erstellen, verwenden Sie '$ json_wave = $ json_array [" data "]; ' – Saty

Antwort

2

So zugreifen können Sie wollen, dass letzte Variable unter der Annahme, die Zeichenfolge, die Sie dies ein

$json_array = json_decode($json); 
$json_wave = implode(',', $json_array->data); 

Weil Ihre JSON enthält sein müssen Objekt, PHP fügt es standardmäßig in ein Objekt ein.Das bedeutet var_dump bedeutet, wenn es heißt stdClass

4

Wenn Sie JSON Array entschlüsseln mögen Sie shoud json_decode Funktion mit zusätzlichen Parametern ($ Assoc als true) verwenden:

$json_array = json_decode($json, true); 

Sie hier, um die Dokumentation aussehen: http://php.net/manual/en/function.json-decode.php

0

Ihre Var_dump zeigen, dass die Zeile wird als ein Objekt dekodiert, so dass Sie nicht mit Array-Notation auf seine Felder zugreifen können.

ändern

$json_wave = $json_array["data"]; 

Um

$json_wave = $json_array->data; 

Alternativ, wenn Sie mit Arrays arbeiten wollen, anstatt Objekte, können Sie den zweiten Parameter wie unten json_decode:

$json_array = json_decode($json, true); 
2

json_decode() gibt standardmäßig ein Objekt zurück anstelle eines Arrays. Wenn Sie den JSON String in Array decodieren möchten, akzeptiert json_decode den zweiten Parameter als boolean.

Wenn der zweite Parameter ist truejson_decode() wird den Wert in Formen des Arrays zurückgeben.

So wird Ihr Code wie folgt aussehen,

$json = $row['wave']; 
$json_array = json_decode($json,true); 
$json_wave = $json_array["data"]; 

Zweiter Parameter von Standardwert des false ist.

Um die Daten aus Objekt erhalten Sie es so,

print_r($json_array->data); 
0

Es funktioniert nicht, weil Sie versuchen, Objekt wie ein Array zu behandeln. json_decode ohne zweiten Parameter konvertiert json_string in ein Objekt. Verwenden Sie json_decode($json, true), um zu sagen: "Hey, konvertiere meine JSON-Zeichenfolge in ein Array, kein Objekt". Auf der anderen Seite können Sie einfach $json_array->data statt $json_array["data"] verwenden.

0

Try This:

$json = '{"length":1847,"data":[0,0,0,0,-46,37]}'; 
$a = json_decode($json); 
print_r($a->data); 

Wert nach json_decode in Variable $a in der Objektform gespeichert und Sie können nicht den Objektwert wie $a['data'] erhalten, so dass Sie auf diese Weise verwenden $a->data