'[{"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
。我应该如何访问它?
答案 0 :(得分:8)
您需要解析JSON字符串,最好使用JSON.parse
。 JSON
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);
以下是评估和打印后的样子:
答案 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);