如何将来自同一数据集的json字符串分配给不同的变量

时间:2015-10-19 14:01:45

标签: javascript json

我有一个数据集,其中包含许多具有相似属性(输出)的设备。 (例如下面给出的2)。我不明白的是我如何使用新名称取出每个设备并将其分配给新的div。数据集中可以有许多设备。如何在有新设备取出bytes_read和bytes_written并将它们分配给新div时,如何告诉我的代码,例如assign

"bdev0": {"Bytes_Read": 0,   "Bytes_Written": 0} to div_one 
"bdev1": {"Bytes_Read": 10, "Bytes_Written": 20  } to div_two 

请注意,我不能使用像data.devices [0]这样的东西,因为有很多设备,它们的名称不断变化,例如bdev0,bdev1,bdev2,bde3 .. 这是给出的数据集样本:

 var data = {
        "devices": [
            {
                "Name": "bdev0",
                "output": {
                    "IO_Operations": 0,
                    "Bytes_Read": 0,
                    "Bytes_Written": 0
                }
            },
            {
                "Name": "bdev1",
                "output": {
                    "IO_Operations": 10,
                    "Bytes_Read": 20,
                    "Bytes_Written": 30
                }
            }
        ]
    }

这是我能走多远但它会创建两个不同的字符串,但我如何将它们分别分配给两个不同的项目。这听起来真的很愚蠢,但我真的被困在这里,例如我想把这些字符串分配给var a和var b我应该怎么做

        function myData() {
                for (var i in data.devices){
                       var obj = new Object();
                       obj.Bytes_read = data.devices[i].output.Bytes_Read;
                        obj.Bytes_written  = data.devices[i].output.Bytes_Written;
                         var jsonString= JSON.stringify(obj);
                   console.log(jsonString)
                  }
                }

    myData(data)

结果

 {"Bytes_read":0,"Bytes_written":0}
    {"Bytes_read":20,"Bytes_written":30}

它为我提供了我想要的数据,但我无法弄清楚将这些集合分配给var a和var b。

2 个答案:

答案 0 :(得分:2)

如果您拥有设备的名称,则可以将其用作访问数据的密钥。

color()

更新:也许这就是你想要的。使用设备名称,函数var data = { "devices": [{ "Name": "bdev0", "output": { "IO_Operations": 0, "Bytes_Read": 0, "Bytes_Written": 0 } }, { "Name": "bdev1", "output": { "IO_Operations": 10, "Bytes_Read": 20, "Bytes_Written": 30 } }] }, selectedData = {}; data.devices.forEach(function (a) { selectedData[a.Name] = { Bytes_Read: a.output.Bytes_Read, Bytes_Written: a.output.Bytes_Written }; }); document.write('<pre>'+JSON.stringify(selectedData, 0, 4)+'</pre>');将返回信息。

getDeviceInfo

答案 1 :(得分:0)

我不太确定你想要实现的目标。下面的代码将采用数组中每个元素的output属性,并在aName时将bdev0设置为其值,否则为b。我希望这就是你所需要的:

var a, b;
if (data[0]['Name'] === 'bdev0') {
    a = JSON.stringify(data[0]['output']); // bdev0
    b = JSON.stringify(data[1]['output']); // bdev1
} else {
    a = JSON.stringify(data[1]['output']); // bdev1
    b = JSON.stringify(data[0]['output']); // bdev0
}