我想在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解码此字符串(字符串) 有什么建议吗?
答案 0 :(得分:0)
这是使用Ext解码JSON的正确方法,异常可能会告诉您JSON字符串中的一些无效语法。 JSON format非常严格。
您可以使用jsonlint之类的在线验证工具来帮助您找出语法错误。
另外注意:在这种情况下,通常更容易在字符串周围使用单引号,这样就可以嵌入双引号而不必转义它们。var string = '{ "success": true, ...}'
答案 1 :(得分:0)
您的JSON代码存在一些问题。
以下是正确的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);