2012-06-06 70 views
7

tôi phải giải mã JSON với Extjs 4:Extjs làm thế nào để giải mã một chuỗi json?

Tôi đã sử dụng Ext.decode(string, true), nhưng nó không hoạt động 'gây chuỗi của tôi là một JSON với một chuỗi JSON (thoát) bên ... như thế này:

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 
    }] 
}'; 

như bạn có thể thấy trường jsonfields là một chuỗi JSON. Khi tôi sử dụng

Ext.decode(string, true); 

không có gì xảy ra cả lỗi.

Mọi đề xuất?

+0

eval (chuỗi) có hoạt động không? – Johni

+1

không, nó không ... –

Trả lời

10

Bạn có thể thử như thế này:

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); 

đó là một chút khéo léo. Nếu bạn loại bỏ thông số an toàn, bạn sẽ thấy rằng json của bạn bỏ lỡ \ trong số jsonfields đó là vì chuỗi của bạn nằm trong dấu ngoặc đơn ' và một \ thực hiện công việc cho nó nhưng bạn muốn một cái gì đó khác ... vì vậy bạn phải tăng gấp đôi.

fiddle example

+0

Xin lỗi tôi có một biến chuỗi x, khi tôi viết console.log (x) -> Tôi nhận được điều này: "{success: true, rows: [{" id ": 33, "defaultset": 1, "name": "Generico", "jsonfields": "[{\\" name \\ ": \\" cm: địa chỉ \\ ", \\" tiêu đề \\ ": \\" Destinatari \\ ", \\" mô tả \\ ": \\" Destinatari \\ ", \\" kiểu dữ liệu \\ ": \\" d: văn bản \\ ", \\" url \\ ": \\"/api/property/cm_addressees \\ "}]", "eliminato": 0}]} ", với trích dẫn kép ... Ext.Decode không hoạt động ... bất kỳ gợi ý nào? –

1

Nó không làm việc, ví dụ Tôi nhận Json của tôi từ máy chủ,

websocket.onmessage = function(event) 

từ WebSocket thực sự và sau đó khi tôi muốn giải mã json tôi,

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

và nơi tôi cần chuỗi của mình, ví dụ:

json.map.MessageType 

json của tôi trông như thế này:

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"}} 

Hope this helps, cheers!

Các vấn đề liên quan