2012-06-08 61 views
0

我想在extjs4解碼與Ext.decode(串),JSON字符串裏面JSON字符串,就像這樣: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(串) 任何建議?

+0

您密鑰必須用引號('\ 「成功\」:','\ 「行\」:') – user123444555621

回答

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

0

這是對JSON與分機解碼正確的方式和異常很可能告訴你關於你的JSON字符串一些無效的語法。 JSON format是非常嚴格的。

您可以使用網上驗證像jsonlint幫助找出什麼地方錯了你的語法。其他

一個注意:在這樣的情況下,它通常更容易使用在你的字符串單引號,這樣你可以嵌入雙引號不必轉義。

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