在Javascript中访问Json

时间:2011-10-25 17:44:45

标签: javascript json

'[{"SponsorID":382,"SponsorName":"Test Name","MonthEndReport":true,"AccountingManager":"Me","UnboundProperties":[],"State":16}]'

当我尝试像这样访问上面的内容时:

for (var i = 0; i < data.length; i++) {
    alert(data[i]);
}

它会解释每一件事,例如[, {, ", S等等。

我也试过data[i].SponsorName,但显然得到了undefined。我应该如何访问它?

5 个答案:

答案 0 :(得分:8)

您需要解析JSON字符串,最好使用JSON.parseJSON API内置于更现代的浏览器中,可以通过包含Crockford's JSON script提供给旧版浏览器。 Crockford的脚本将检测浏览器是否已提供API,如果没有则添加它。

有了这个,如果你的JSON在一个名为response的字符串变量中,你可以:

var parsedResponse = JSON.parse( response );
//run your iterating code on parsedResponse

答案 1 :(得分:2)

首先,JSON对象中的JSON字符串需要eval()或更理想JSON.parse()。这假设您信任JSON的来源。

var jsonobj = JSON.parse(data); 
// Now view the object's structure
console.dir(jsonobj);

以下是评估和打印后的样子:

Screen capture of the JSON obj

答案 2 :(得分:1)

var array = JSON.parse('[{"SponsorID":382,"SponsorName":"Test Name","MonthEndReport":true,"AccountingManager":"Me","UnboundProperties":[],"State":16}]')
array[0].AccountingManager; // "me"

或者每个人最喜欢的图书馆,因为IE7及以下版本没有原生支持:

$.parseJSON('[{"SponsorID":382,"SponsorName":"Test Name","MonthEndReport":true,"AccountingManager":"Me","UnboundProperties":[],"State":16}]')

答案 3 :(得分:0)

你先解析了Json字符串,对吗?

var data = '[{"SponsorID":382,"SponsorName":"Test Name","MonthEndReport":true,"AccountingManager":"Me","UnboundProperties":[],"State":16}]';
data = JSON.parse(data);
alert(data.SponsorName);

由于安全性和性能问题,JSON.parse(如果可用)是“eval”的首选方法。

答案 4 :(得分:0)

你有一个JSON数组后跟一个对象:

var data = [{"SponsorID":382,"SponsorName":"Test Name","MonthEndReport":true,"AccountingManager":"Me","UnboundProperties":[],"State":16}];

alert(data[0].SponsorID);