7

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

ご覧のとおり、フィールドjsonfieldsはJSON文字列です。使うとき

Ext.decode(string, true);

何も起こらず、エラーも発生しません。

助言がありますか?

4

2 に答える 2

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

それは少しトリッキーです。安全なパラメーターを削除すると、文字列が引用符で囲まれ、1つがその役割\を果たしますが、別の何かが必要なため、jsonがその中で見逃していることがわかります...したがって、2倍にする必要があります。jsonfields'\

フィドルの例

于 2012-06-06T15:11:09.407 に答える
1

たとえば、サーバーからJsonを取得していますが、

websocket.onmessage = function(event)

実際にwebsocketから、そして後でjsonをデコードしたいときに、

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

たとえば、文字列が必要な場所

json.map.MessageType

私のjsonは次のようになります:

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

これが役に立てば幸いです、乾杯!

于 2016-10-04T15:52:09.160 に答える