我正在使用一个返回数据数组的API,我使用JSON.Parse来使用数据。我能够收集正确的数据细节,但是我希望能够将这些细节链接到它们所包含的对象。
我使用以下代码来收集我的数组和JSON解析:
var venue = JSON.parse(this.responseText);
console.log(venue);
返回:Object {4293315: Array[108]}
然后我通过运行以下代码解析'4293315'中包含的数组:
for(var person in venue) {
var personDetail = venue[person];
for(detail in personDetail) {
if(personDetail[detail].max_rssi > maxRssi) {
venueDetails.push(personDetail[detail]);
}
}
}
var capacity = venueDetails.length;
capacity --;
console.log("capacity: " + capacity);
var temp = JSON.stringify(venueDetails);
console.log(venue +": " + temp);
返回:
capacity: 6
[object Object]: [{"mac_id":12960837,"wifi_uid":null,"first_seen":"2016-06-14T00:13:23.000Z","last_seen":"2016-06-14T00:13:23.000Z","max_rssi":-55,"latest_rssi":-55,"frames":1},...
问题是对象名称是一个ID号,例如4293315
,所以当我尝试运行venue.4293315.name
时收到错误。
有人可以帮我弄清楚如何存储对象名称,以便我可以将内部包含的值与对象相关联吗?例如,我希望能够将对象名称存储在键和值映射中,以便稍后我可以询问每个对象或ID的容量信息。
答案 0 :(得分:1)
您可以通过以下方式以编程方式获取名称的值:
var objectNames = Object.keys(venue); // gives an array of the keys
假设你知道只有一个:
var id = objectNames[0];
然后,您可以使用id
访问属性,正如其他人所示。
答案 1 :(得分:0)
您可以使用venue[4293315].name
访问会场名称。
如果您确实想使用问题中的格式访问值,可以在每个ID号的开头附加一个字符串“id”(或您喜欢的任何内容)。然后,您可以使用venue.id4293315.name
。
答案 2 :(得分:0)
访问对象中的数字时,或者如果需要根据变量获取对象中的项目,请使用括号表示法。
object.property
被称为Dot Notation,如果该属性不以数字开头,则可以使用它。
object[property]
称为Bracket Notation,可用于访问不符合常规变量名称的属性。
myObj = {
'hello': 'world',
'17921': 'foo'
}
在此示例中,您可以正常访问myObj.hello
,但您必须使用myObj[17921]
来访问编号名称,该名称通常不会被视为有效的JS变量名称。
在同一权利中,如果您有一个名为numberId
的变量等于17921,则可以使用myObj[numberId]
获得相同的数字。
答案 3 :(得分:0)
在我的情况下,我将PropertyName与json属性一起使用,也许可以帮助某人
{
"1": "English LL",
"2": "Individuals and Societies",
"3": "Sciences",
"4": "Visual Arts # Music",
"5": "Arabic LL",
"Day": "Su"
}
//Change the number to
[JsonProperty(PropertyName = "1")]
public string Day1{ get; set; }
[JsonProperty(PropertyName = "2")]
public string Day2{ get; set; }
[JsonProperty(PropertyName = "3")]
public string Day3{ get; set; }
[JsonProperty(PropertyName = "4")]
public string Day4{ get; set; }
[JsonProperty(PropertyName = "5")]
public string Day5{ get; set; }
[JsonProperty(PropertyName = "6")]
public string Day6{ get; set; }