Extjs4如何用json字符串解码json代码?

时间:2012-06-08 08:27:38

标签: json extjs

我想在extjs4中用Ext.decode(string)解码,一个带有json字符串的json字符串,就像这样:

var string = "{success:true, 
rows:[{"jsonfields":"[
{\\"name\\":\\"cm:title\\",\\"title\\":\\"Titolo\\",\\"description\\":\\"Titolo del contenuto\\",\\"dataType\\":\\"d:mltext\\",\\"url\\":\\"\/api\/property\/cm_title\\"},
{\\"name\\":\\"cm:content\\",\\"title\\":\\"Contenuto\\",\\"description\\":\\"Contenuto\\",\\"dataType\\":\\"d:content\\",\\"url\\":\\"\/api\/property\/cm_content\\"},
{\\"name\\":\\"cm:name\\",\\"title\\":\\"Nome\\",\\"description\\":\\"Nome\\",\\"dataType\\":\\"d:text\\",\\"url\\":\\"\/api\/property\/cm_name\\"}]"}
]}";

正如您所见,“jsonfields”是一个json字符串代码。 如何使用Ext.decode解码此字符串(字符串) 有什么建议吗?

2 个答案:

答案 0 :(得分:0)

这是使用Ext解码JSON的正确方法,异常可能会告诉您JSON字符串中的一些无效语法。 JSON format非常严格。

您可以使用jsonlint之类的在线验证工具来帮助您找出语法错误。

另外注意:在这种情况下,通常更容易在字符串周围使用单引号,这样就可以嵌入双引号而不必转义它们。

var string = '{ "success": true, ...}'

答案 1 :(得分:0)

您的JSON代码存在一些问题。

  1. 所有密钥都必须在引号中(成功和行不是)。
  2. 将JSON字符串直接嵌入到javascript中时使用单引号。这样就可以避免使用转义字符。
  3. 以下是正确的JSON代码。我还更新了您的jsfiddle链接。

    var string = '{
    "success": true,
    "rows": [
        {
            "jsonfields": [
                {
                    "name": "cm: title",
                    "title": "Titolo",
                    "description": "Titolodelcontenuto",
                    "dataType": "d: mltext",
                    "url": "/api/property/cm_title"
                },
                {
                    "name": "cm: content",
                    "title": "Contenuto",
                    "description": "Contenuto",
                    "dataType": "d: content",
                    "url": "/api/property/cm_content"
                },
                {
                    "name": "cm: name",
                    "title": "Nome",
                    "description": "Nome",
                    "dataType": "d: text",
                    "url": "/api/property/cm_name"
                }
            ]
        }
    ]}';
    
    
    var decodedString = Ext.decode(string);
    console.log(decodedString);