我的json看起来或多或少是这样的:
{
"TaskCategoryType": [
{
"PK_Column_Value": "C",
"Column_Description": "Consumables"
},
//...
}
我需要检索" PK_Column_Value"的值。不知道密钥的名称。
循环并获得记录很好,但我不想要:
row.PK_Column_Value
在我的Javascript中,因为在运行时,我不知道名称" PK_Column_Value",只是它是2列中的第一个"对"每个json行。
我试过:row [0]但是它返回undefined。
我想加载一个选择下拉框,其值为" PK_Column_Value" "描述"的文本,但我想通过其他json数据发送,这些数据在JSON中具有不同的列名。
答案 0 :(得分:2)
你能做的最好的就是循环和检查,不同的浏览器可以产生不同的对象顺序:
for (var i = 0; i < data.TaskCategoryType.length; i++) {
for (var key in data.TaskCategoryType[i]) {
console.log(data.TaskCategoryType[i][key]) //Your keys
}
}
答案 1 :(得分:1)
唯一“干净”的方法是重构JSON以包含数组而不是对象。
{
"TaskCategoryType": [
[
"C",
"Consumables"
],
//...
}
但我个人认为,这样可以使代码更容易阅读和维护。
答案 2 :(得分:0)
假设您的对象仅有两个键,并且您知道其他键;
var o = {
"PK_Column_Value": "C",
"Column_Description": "Consumables"
};
获取密钥
var keys = [], k;
for (k in o) keys.push(k);
找到 Column_Description
i = keys.indexOf('Column_Description');
获取其他密钥
k = keys[1 - i];
现在
k === 'PK_Column_Value';
这解决了您无法保证关键顺序的事实