2016-11-08 47 views
0

我試圖解析json對象以獲取連接到變量的鍵和值。 從給定的JSON我所需的輸出是:JSON:javascript中的鍵值串聯

"/" - 7.84 GiB; "/opt" - 4.86 GiB; "/usr" - 4.80 GiB 

使用我的片段,我可以得到的對象,但在努力獲得所需格式的名稱和值。請協助。

for (i = 0; i < obj.length; i++) 
{ 
if (obj[i].name === 'mountpoints') 
{ 
js_mountpoints = obj[i].value; 
break; 
} 
js_mountpoints = 'NA'; 
} 

我的JSON輸入:

[{ 
    "name" : "pe_build", 
    "value" : "2016.2.1" 
}, 
{ 
    "name" : "kernel", 
    "value" : "Linux" 
}, { 
    "name" : "blockdevices", 
    "value" : "sda,sdb,sr0" 
}, 
{ 
    "name" : "mountpoints", 
    "value" : { 
     "\/boot\/efi" : { 
      "size_bytes" : 261861376, 
      "size" : "249.73 MiB", 
      "capacity" : "0%" 
     }, 
     "\/opt" : { 
      "size_bytes" : 2086666240, 
      "size" : "1.94 GiB", 
      "capacity" : "1.64%" 
     }, 
     "\/boot" : { 
      "size_bytes" : 258650112, 
      "size" : "246.67 MiB", 
      "capacity" : "74.28%" 
     }, 
     "\/var" : { 
      "size_bytes" : 10475274240, 
      "size" : "9.76 GiB", 
      "filesystem" : "xfs", 
      "capacity" : "4.01%" 
     } 
    } 
    }, { 
    "name" : "uptime_seconds", 
    "value" : 244181 
}, { 
"name" : "memoryfree", 
"value" : "6.66 GiB" 
}, { 
"name" : "memoryfree_mb", 
"value" : 6816.91796875 
} 
] 
+0

您的循環將遍歷的JSON外值。你需要在數據對象內部進行另一次迭代。同樣,一旦你到達期望的鍵,你將需要從該對象拉**大小**。 –

+3

如果您可以發佈有效的JSON – adeneo

+0

@ adeneo,那會非常好,謝謝您的回覆。我更新了JSON, – Jakk

回答

1
finalStr = '' 
Object.keys(obj).forEach(function(key) { 
    if (obj[key].name === 'mountpoints') { // only get sizes for mountpoints 
    var value = obj[key].value; 
    Object.keys(value).forEach(function(name) { // add all sizes to string 
     finalStr += '"' + name + '" - ' + value[name].size + ';'; 
    }); //update 
    } 
}); //update 

if (finalStr.length > 0) { // at least one entry was added 
    finalStr.slice(0, -1); 
} 
+0

它工作..謝謝你:) – Jakk