2012-06-06 15 views
7

devo decodificare JSON con Extjs 4:Extjs come decodificare una stringa json?

ho usato Ext.decode(string, true), ma non funziona perche' la mia stringa è un JSON con una stringa JSON (sfuggito) dentro ... in questo modo:

var string = '{ 
    success: true, 
    rows: [{ 
     "id": 33, 
     "defaultset": 1, 
     "name": "Generico", 
     "jsonfields": "[{\"name\":\"cm:addressees\",\"title\":\"Destinatari\",\"description\":\"Destinatari\",\"dataType\":\"d:text\",\"url\":\"\/api\/property\/cm_addressees\"}]", 
     "eliminato": 0 
    }] 
}'; 

come si può vedere il campo jsonfields è una stringa JSON. Quando utilizzo

Ext.decode(string, true); 

non succede nulla né errore.

Qualche suggerimento?

+0

Fa eval (stringa) funziona? – Johni

+1

no, non ... –

risposta

10

Si può provare in questo modo:

var string = '{success:true, rows:[{"id":33,"defaultset":1,"name":"Generico","jsonfields":"[{\\"name\\":\\"cm:addressees\\",\\"title\\":\\"Destinatari\\",\\"description\\":\\"Destinatari\\",\\"dataType\\":\\"d:text\\",\\"url\\":\\"/api/property/cm_addressees\\"}]","eliminato":0}]}'; 

var decodedString = Ext.decode(string); 
console.log(decodedString); 

che è un po 'difficile. Se rimuovi i parametri di sicurezza, vedrai che il tuo json manca jsonfields nella tua virgolette, e che la tua stringa è in ' virgolette e un \ fa il lavoro ma vuoi qualcosa di diverso ... quindi devi raddoppiarlo.

fiddle example

+0

Scusa se ho una variabile stringa x, quando scrivo console.log (x) -> Ho capito: "{successo: vero, righe: [{" id ": 33, "defaultset": 1, "name": "Generico", "jsonfields": "[{\\" \\ nome ": \\" cm: destinatari \\ "\\ "titolo \\": \\" Destinatari \\ "\\ "description \\": \\ "Destinatari \\", \\ "dataType \\": \\ "d: il testo \\", \\ "url \\": \\"/api/property/cm_addressees \\ "}]", "eliminato": 0}]} ", con virgolette doppie ... Ext.Decode non funziona ... qualche suggerimento? –

1

Funziona, per esempio sto ottenendo il mio JSON dal server,

websocket.onmessage = function(event) 

dal websocket in realtà e più tardi quando voglio decodificare il mio JSON,

var json = Ext.decode(event.data); 

e dove ho bisogno della mia stringa per esempio

json.map.MessageType 

mio JSON è simile al seguente:

mpty":false,"map":{"MessageText":"Ciao, how are you?","MessageType":"IN"},"hashtable":{"MessageText":"Ciao, how are you?","MessageType":"IN"},"persistData":{"MessageText":"Ciao, how are you?","MessageType":"IN"}} 

Spero che questo aiuti, evviva!

Problemi correlati