如何使用角度 js 对 JSON 对象进行交互

How to interate over JSON objects with angular js

本文关键字:对象 交互 JSON 何使用 js      更新时间:2023-09-26

我有一个JSON结构如下

var myJson = {
   "Number of Devices":2,
   "Block Devices":{
      "bdev0":{
         "Backend_Device_Path":"/dev/ram1",
         "Capacity":"16777216",
         "Bytes_Written":9848,
         "timestamp":"4365093970",
         "IO_Operations":87204,
         "Guest_Device_Name":"vdb",
         "Bytes_Read":107619,
         "Guest_IP_Address":"192.168.26.88"
      },
      "bdev1":{
         "Backend_Device_Path":"/dev/ram2",
         "Capacity":"16777216",
         "Bytes_Written":10062,
         "timestamp":"9365093970",
         "IO_Operations":93789,
         "Guest_Device_Name":"vdb",
         "Bytes_Read":116524,
         "Guest_IP_Address":"192.168.26.100"
      }
   }
}

我想选择块设备是 bdev0, bdev1...以及它们的值 通常这很容易在原版 javascript 中使用 Object.keys 来完成,但似乎我不能在 angular 中使用这个函数,所以我尝试了 angular.forEach,但它返回未定义。

这是我能走多远

function getData(){
  $http.get(path)
  .success(function(data){
    $scope.devices = data
    angular.forEach($scope.devices, function(item){
                   console.log(item['Block Devices']);
               })

  })
}

使用下面的代码片段中的forEach来访问所需的属性:

angular.forEach($scope.devices['Block Devices'], function(value, key) {
   console.log(value, key);
   // Would log value of $scope.devices['Block Devices'][key]
   // and key name which is 'bdev0', 'bdev1' etc.
})

通过这种方式,您可以访问 bdev0 的值,bdev1作为回调函数中的设备的值和名称作为key

Angular 是一个 JavaScript 框架。任何在原版javascript中工作的东西也可以在这里工作。关于你的问题:你应该像这样迭代:

angular.forEach($scope.devices['Block Devices'], function(value, key){
       console.log(key);
})

这将控制台bdev0bdev1等。