[英]Nodejs - retrieve value from nested and non-nested json
我將json
和一個key
傳遞給下面的函數來檢索它的value
。 密鑰可以像 abc.cde.def nad 它也可以像 fgh only。
如果密鑰包含.
那么它是一個嵌套的json
並且必須相應地檢索值,這是正確發生的,但如果它是一個沒有嵌套的普通json
,那么它就不起作用。 打印 keysData 的長度(如果key
像 fgh)它會在應該打印 1 的地方打印 3。
function getValueFromJson(jsonInput,keyInput) {
if(keyInput.includes('.')){
var keysData = keyInput.split('.');
}
else {
keysData = keyInput.toString()
}
var jsonHierarchy = jsonInput;
if(parseInt(keysData.length) === parseInt('1')){
console.log(jsonHierarchy)
console.log(keysData )
console.log(jsonHierarchy[keysData ])
jsonHierarchy = jsonHierarchy[keysData ];
}
return jsonHierarchy;
};
任何人都可以幫助我如何處理這個問題?
你不需要檢查if(keyInput.includes('.'))
只需執行keyInput.split('.')
//for Ex.
'abc.defg'.split('.') // result ['abc', 'defg']
'abc'.split('.') // result ['abc']
還有
if(parseInt(keysData.length) === parseInt('1'))
//can be used as
if(keysData.length === 1)
你的完整功能應該是
function getValueFromJson(jsonInput,keyInput) {
var keysData = keyInput.split('.');
var jsonHierarchy = jsonInput;
keysData.forEach(function(d) {
if(jsonHierarchy)
jsonHierarchy = jsonHierarchy[d];
})
return jsonHierarchy;
};
var jsonData = { 'abc': { 'def': { 'gh': 'value1' }, 'xyz': 'value2' } }; function getValueFromJson(jsonInput, keyInput) { var keysData = keyInput.split('.'); var jsonHierarchy = jsonInput; keysData.forEach(function(d) { if (jsonHierarchy) jsonHierarchy = jsonHierarchy[d]; }) return jsonHierarchy; }; function get() { var val = document.getElementById('key').value; if (val) console.log(getValueFromJson(jsonData, val)); };
<input id="key" /> <button onclick="get()">Get Value</button>
將您的字符串轉換為數組,然后正確顯示您的長度。
var keysData = keyInput.split('.')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.