我有一个以不同方式返回的JSON对象,但始终有key
。我怎么能得到它?
E.g。
"Records": {
"key": "112"
}
或者
"Records": {
"test": {
"key": "512"
}
}
甚至在数组中:
"Records": {
"test": {
"test2": [
{
"key": "334"
}
]
}
}
尝试了几个选项,但仍然无法弄清楚(
答案 0 :(得分:2)
我不会为你编写代码但是给你一个想法可能会有所帮助,首先使用
将JSON对象转换为字符串JSON.stringify(obj);
之后使用indexOf()方法搜索Key。 提取以前的' {'和下一个'}'字符串并再次转换为JSON对象。 使用
var obj = JSON.parse(string);
然后
var value = obj.key
答案 1 :(得分:1)
我认为这个migth是解决方案(asuming key总是字符串,你不关心数据的res)
const data = [`"Records": {
"test": {
"test2": [
{
"key": "334",
"key": "3343"
}
]
}
}`, `"Records": {
"test": {
"key": "512"
}
}`, `"Records": {
"key": "112"
}`]
const getKeys = data => {
const keys = []
const regex = /"key"\s*:\s*"(.*)"/g
let temp
while(temp = regex.exec(data)){
keys.push(temp[1])
}
return keys
}
for(let json of data){
console.log(getKeys(json))
}
答案 2 :(得分:0)
我怎么能得到它?
递归! e.g。
function getKey(rec) {
if (rec.key) return rec.key;
return getKey(rec[Object.keys(rec)[0]]);
}
答案 3 :(得分:0)
您可以使用迭代和递归方法获取其中包含SELECT 1
的对象。
key
答案 4 :(得分:0)
你可以试试这个
const data = {
"Records": {
"key": "112"
}
};
const data2 = {
"Records": {
"test": { "key": "512" }
}
};
const data3 = {
"Records": {
"test": {
"test2": [
{ "key": "334" },
]
}
}
};
function searchKey(obj, key = 'key') {
return Object.keys(obj).reduce((finalObj, objKey) => {
if (objKey !== key) {
return searchKey(obj[objKey]);
} else {
return finalObj = obj[objKey];
}
}, [])
}
const result = searchKey(data);
const result2 = searchKey(data2);
const result3 = searchKey(data3);
console.log(result);
console.log(result2);
console.log(result3);