0

我想用 Ext.decode(string) 在 extjs4 中解码,一个 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(string) 解码这个字符串有什么建议吗?

4

2 回答 2

0

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

您可以使用像jsonlint这样的在线验证器来帮助找出您的语法有什么问题。

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

var string = '{ "success": true, ...}'
于 2012-06-08T12:37:18.907 回答
0

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

  1. 您的所有键都需要用引号引起来(成功和行不是)。
  2. 将 JSON 字符串直接嵌入 javascript 时使用单引号。这样您就可以避免使用转义字符。

下面是正确的 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);

​</p>

于 2012-06-08T19:06:53.097 回答