首页 > 解决方案 > 在 JavaScript 中解析嵌套的 JSON 数据

问题描述

我有一个嵌套的 JSON 数据集,想从中提取和打印某些值。

我可以提取和打印整个 JSON 组件,可以获取顶级数据的值,但我不知道如何访问下一级数据的各个组件。

我的代码如下。它正确打印“年龄”和“测量”的值

var json = `{
    "age":"84",
    "measurements":"5235", 
    "sensordatavalues":
    [
        {"value_type":"P1", "value":"5.50"},
        {"value_type":"P2", "value":"1.65"},
        {"value_type":"temperature", "value":"18.21"},
        {"value_type":"humidity", "value":"66.75"},
        {"value_type":"pressure", "value":"101171.75"}
    ]
}`;
// Converting JSON object to JS object
var obj = JSON.parse(json);
// Define recursive function to print nested values
function printValues(obj) {
  for (var k in obj) {
    if (obj[k] instanceof Object) {
      printValues(obj[k]);
    } else {
      document.write(obj[k] + "<br>");
    };
  }
};
// Print all the values from the resulting object
printValues(obj);
document.write("<hr>");
// Print some of the individual values
document.write(obj.age + "<br>"); // Prints: Age
document.write(obj.measurements + "<br>"); // Prints: Measurements
document.write(obj.sensordatavalues.P1 + "<br>"); // Should print P1 value
document.write(obj["sensordatavalues"].P2 + "<br>"); // Should print P2 value
document.write(obj["sensordatavalues"]["humidity"] + "<br>"); // Should print Humidity
document.write(obj.pressure + "<br>"); // Should print Pressure

但无法从嵌套的 JSON 数据中正确解析“湿度”和“压力”(或其他值)的数据。我尝试了几种不同的方法,但似乎我错过了重要的一步。

任何帮助,将不胜感激。

标签: javascripthtmljsonnested-lists

解决方案


推荐阅读