2012-03-28 7 views
0

Ich kann dies in ein Array erhalten ..PHP-Decodierdaten JSON/SERIALIZED

Ich sollte dies mit php entschlüsseln:

({serverTimestamp: "Wed, 28 Mar 2012 11:40:26 +0000",users: [{userId: "username",statuscode:0,floatingPL:-1000.00,balance:50000,equity:40000,freeMargin:4000,marginInUse:30.11,currency:"EUR",closedPL:5692.85,creditFacility:0,mostRecentUpload:"Wed, 28 Mar 2012 11:39:58 +0000"}]}) 

Es sieht aus wie es serialisiert ist, aber unserialize() gibt falsch in var_dump(). Json_decode gibt das gleiche ..

Danke

+3

Eigenschaftsnamen in JSON müssen angegeben werden. Es ist nicht JSON. – Quentin

+0

Und verlieren Sie diese '(' und ')' Klammern ... –

Antwort

2

Beispiel: http://codepad.org/tK4zIJj1

serialize() vs unserialize() sind PHP eigene Daten vom/zum String-Umwandlungsfunktionen, die mit zirkulären Referenzen umgehen können, Klassen, etc., aber in der Regel nicht kompatibel mit der Außenwelt.

  1. Sie sollten den Esel des Anbieters der "JSON" -Daten treten, um es zu reparieren.
  2. Wenn arschtretend nicht helfen, können Sie diese schnell zusammengestellten Funktion nutzen zu können:

    function fix_json($j){ 
        $j = trim($j); 
        $j = ltrim($j, '('); 
        $j = rtrim($j, ')'); 
        $a = preg_split('#(?<!\\\\)\"#', $j); 
        for($i=0; $i < count($a); $i+=2){ 
        $s = $a[$i]; 
        $s = preg_replace('#([^\s\[\]\{\}\:\,]+):#', '"\1":', $s); 
        $a[$i] = $s; 
        } 
        //var_dump($a); 
        $j = implode('"', $a); 
        //var_dump($j); 
        return $j; 
    } 
    

    Beispiel: http://codepad.org/9MpZVWrF

+0

Vielen Dank, aber ich bekomme diese Daten eine externe URL, nicht meine Website, wie kann ich diese doppelten Anführungszeichen um die Eigenschaftsnamen hinzufügen? – user926734

+0

Danke, das funktioniert :) – user926734

+0

Vergessen Sie nicht, es vor der Verwendung zu testen! Wenn es wirklich funktioniert, bitte akzeptieren Sie die richtige Antwort :) – biziclop

0

Ja, ghoti Recht. Damit PHP in JSON konvertiert werden kann, müssen alle Eigenschaftsnamen in Anführungszeichen gesetzt werden. In diesem Fall ist dies der korrekte JSON:

({"serverTimestamp": "Wed, 28 Mar 2012 11:40:26 +0000","users": [{"userId": "username","statuscode":0,"floatingPL":-1000.00,"balance":50000,"equity":40000,"freeMargin":4000,"marginInUse":30.11,"currency":"EUR","closedPL":5692.85,"creditFacility":0,"mostRecentUpload":"Wed, 28 Mar 2012 11:39:58 +0000"}]}) 
+0

Danke, aber ich bekomme diese Daten eine externe URL, nicht meine Website, wie kann ich diese doppelten Anführungszeichen um die Eigenschaftsnamen hinzufügen? – user926734