2

我的控制器有一个方法将 jsonArray 的字符串表示形式返回为

jsonArray.toString()

现在下面是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 中的键访问值

IE。我想访问键“displaytag.tracking.id”的值

问题是当我在做console.log(obj[0]["portal.home"]); 它给了我错误TypeError: obj[0] is undefined

我该怎么办 ?

4

4 回答 4

6

首先您需要将JSON 字符串解析为 JavaScript 对象,然后访问所需的属性:

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

在不支持原生 JSON 的旧浏览器中,您应该使用 Crockford 的json2.js之类的东西,它会给您一个;请不要在 JSON 上使用 eval(),因为它会导致非常糟糕的事情。

于 2013-01-25T09:41:33.813 回答
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"];
于 2013-01-25T09:40:13.507 回答
0

如果您的 javascript 源中直接有 JSON(我不假设,但我正在为其他人添加它),您可以删除引号,javascript 基于它创建一个对象:

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"]);
于 2013-01-25T09:43:47.553 回答
0

您可以通过以下方式直接访问

var data = JSON.parse('[{"Item_Number":"M71118LHB","Description":"MENS ONESIE"}]');
var desc = data[0].Description;
console.log(desc);
于 2018-04-03T13:52:53.980 回答