Extjs如何解码json字符串?

Pie*_*per 7 json extjs decode

我必须解码JSON Extjs 4:

我已经使用过Ext.decode(string, true),但是它不起作用'因为我的字符串是一个带有JSON字符串(转义)的JSON ......就像这样:

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
    }]
}';
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,该字段jsonfields是一个JSON字符串.我用的时候

Ext.decode(string, true);
Run Code Online (Sandbox Code Playgroud)

什么都不会发生错误.

有什么建议?

Vyt*_*tas 10

你可以尝试这样:

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);
Run Code Online (Sandbox Code Playgroud)

这有点棘手.如果你删除了安全参数,你会发现你的json错过\了你的那个,jsonfields因为你的字符串是'引号,而一个\人为它做了工作,但你想要一些不同的东西......所以你必须加倍它.

小提琴的例子