簡體   English   中英

Javascript:在JSON中查找鍵及其值

[英]Javascript: Find key and its value in JSON

我有一個以不同方式返回的JSON對象,但始終具有key 我怎么才能得到它?

例如

"Records": {
    "key": "112"
}

要么

"Records": { 
    "test": {
        "key": "512"
    }
}

甚至是數組:

"Records": { 
    "test": {
        "test2": [
            {
                "key": "334"
            }
        ]
    }
}

嘗試了幾種選擇,但仍然無法弄清楚(

我不會為您編寫代碼,但會給您一個想法,可能會有所幫助,首先使用以下方法將JSON對象轉換為字符串

JSON.stringify(obj);

之后,使用indexOf()方法搜索Key。 提取上一個'{'和Next'}'字符串,然后再次強制轉換為JSON對象。 運用

var obj =  JSON.parse(string);

然后

 var value = obj.key

我認為這種解決方案是解決方案(假設鍵始終是字符串,並且您不關心數據的分辨率)

 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)) } 

我怎么才能得到它?

遞歸! 例如

function getKey(rec) {
    if (rec.key) return rec.key;

    return getKey(rec[Object.keys(rec)[0]]);
}

https://jsfiddle.net/su42h2et/

您可以使用迭代和遞歸的方法來獲取帶有key的對象。

 function getKeyReference(object) { function f(o) { if (!o || typeof o !== 'object') { return; } if ('key' in o) { reference = o; return true; } Object.keys(o).some(function (k) { return f(o[k]); }); } var reference; f(object); return reference; } var o1 = { Records: { key: "112" } }, o2 = { Records: { test: { key: "512" } } }, o3 = { Records: { test: { test2: [{ key: "334" }] } } }; console.log(getKeyReference(o1)); console.log(getKeyReference(o2)); console.log(getKeyReference(o3)); 

你可以試試這個

 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); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM