这是我的json:
{"d":{"key1":"value1",
"key2":"value2"}}
有没有办法在不知道键是什么的情况下访问此数组中的键和值(在javascript中)?
我的json结构的原因是我通过jquery调用的web方法返回一个字典。如果无法使用上述内容,我需要更改有关返回数据的方式吗?
以下是我的网络方法概述:
<WebMethod()> _
Public Function Foo(ByVal Input As String) As Dictionary(Of String, String)
Dim Results As New Dictionary(Of String, String)
'code that does stuff
Results.Add(key,value)
Return Results
End Function
答案 0 :(得分:53)
您可以使用for..in
构造迭代对象的任意属性:
for (var key in obj.d) {
console.log("Key: " + key);
console.log("Value: " + obj.d[key]);
}
答案 1 :(得分:9)
这是你要找的吗?
var data;
for (var key in data) {
var value = data[key];
alert(key + ", " + value);
}
答案 2 :(得分:3)
使用for循环来实现相同的目的。
var dlist = { country: [ 'ENGLAND' ], name: [ 'CROSBY' ] }
for(var key in dlist){
var keyjson = dlist[key];
console.log(keyjson)
}
答案 3 :(得分:2)
使用word&#34; b&#34;,您仍在使用密钥名称。
var info = {
"fname": "Bhaumik",
"lname": "Mehta",
"Age": "34",
"favcolor": {"color1":"Gray", "color2":"Black", "color3":"Blue"}
};
请看下面的代码段。
for(key in info) {
var infoJSON = info[key];
console.log(infoJSON);
}
结果将是,
Bhaumik
Mehta
Object {color1: "Gray", color2: "Black", color3: "Blue"}
不希望最后一行显示出来吗?请尝试以下代码:
for(key in info) {
var infoJSON = info[key];
if(typeof infoJSON !== "object"){
console.log(infoJSON);
}
}
这将消除Object {color1: “Gray”, color2: “Black”, color3: “Blue”}
在控制台中的显示。
现在我们需要遍历变量infoJSON来获取数组值。看看以下整个代码的和平。
for(key in info) {
var infoJSON = info[key];
if (typeof infoJSON !== "object"){
console.log(infoJSON);
}
}
for(key1 in infoJSON) {
if (infoJSON.hasOwnProperty(key1)) {
if(infoJSON[key1] instanceof Array) {
for(var i=0;i<infoJSON[key1].length;i++) {
console.log(infoJSON[key1][i]);
}
} else {console.log(infoJSON[key1]);}
}
}
现在我们得到了结果
Bhaumik
Mehta
Gray
Black
Blue
如果我们使用键名或id,那么从JSON对象获取值非常容易,但在这里我们得到的值不使用键名或id。
答案 4 :(得分:0)
{"d":{"key1":"value1",
"key2":"value2"}}
要访问第一个键,请执行以下操作:
let firstKey=Object.keys(d)[0];
要访问第一个键写入的值:
let firstValue= d[firstKey];