2013-01-25 9 views
-3

我控制器JSON對象具有被作爲如何讀取在JS

jsonArray.toString()

查閱以下返回jsonArray的字符串表示的方法的方法AJAX

function loadPropertyFile(url) { 
$.ajax({ 
    type: "GET", 
    url: url, 
    dataType: "text", 
    success: function(response){ 
     var obj = jQuery.parseJSON(response); 
     alert(obj); 
    } 
}); 

}

這裏解析後的變量obj出來是

"[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}]" 

現在我想訪問js中的鍵的值

即,我想訪問鍵值「displaytag.tracking.id」

問題是當我在做console.log(obj [0] [「portal.home」]);它給了我錯誤TypeError:obj [0]是undefined

我該怎麼辦?

+0

它是一個字符串,還是你有一個實際的JavaScript對象。這應該是微不足道的找出任何一種方式? – adeneo

+0

瑣碎的問題,並沒有明確形成。 –

+0

已編輯的問題。請參閱 – Bhuvan

回答

2

首先,你需要的JSON字符串解析爲JavaScript對象,然後訪問所需的屬性:

var obj = JSON.parse(json); 
console.log(obj[0]["portal.home"]); 

在沒有原生JSON支持的舊版瀏覽器中,您應該使用像Crockford的json2.js這樣的東西,它會給你一個;請不要在JSON上使用eval(),因爲它可能會導致很糟糕的事情。

+0

已編輯的問題。請參閱 – Bhuvan

1

使用$.parseJSON(或JSON.parse在現代瀏覽器)到您的字符串轉換爲JavaScript對象:

var json = '[{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}]'; 
var object = $.parseJSON(json); 

在你的情況你的JSON字符串將創建一個數組,所以你需要獲取對象正確索引:

var portalHomeValue = object[0]["portal.home"]; 
+0

對於舊瀏覽器,您可以使用[JSON2](https:// github.com/douglascrockford/JSON-js)。如果你不使用jQuery。 –

+0

這個json對象是在解析var obj = jQuery.parseJSON(response)之後來的; – Bhuvan

+0

@bhuvan如果它的對象使用'obj [0] ['portal.home']' –

0

如果您在JavaScript源代碼中直接使用JSON(我不假設這一點,但是我將其添加到其他人中),那麼您可以刪除引號,並根據它創建一個對象:

var obj = [{"portal.home":"Home"},{"displaytag.tracking.id":"Item ID"},{"displaytag.tracking.itemName":"Item Name"},{"displaytag.tracking.itemType":"Type"}]; 
console.log(obj[0]["portal.home"]); 
+0

,按照你的邏輯,最好使用'console.log(「Home」)'作爲解決方案。 – VisioN

+0

已編輯的問題。請參見 – Bhuvan