【发布时间】:2019-07-01 01:11:20
【问题描述】:
数据没有以正确的 JSON 格式输入,所以我必须遍历数组中的项目来修复格式,解析更改的项目,当一切都完成后我不能使用新对象,因为它不再在数组中。数据如下: 数据[数据点:[0..1..] 目标:“up{cluster="bluehills_c3260_cluster",component="atr",datacenter="bluehills",hostname="ny-153-177"...}"] 有没有更简单的方法可以使用 .map 函数或其他方法进行转换,以使事情更清洁并获得所需的结果?
我尝试了几种方法,包括 .replace、.map 和 .push。我也尝试过 JSON.stringify,但除了我目前拥有的之外,似乎没有其他方法可以工作。
onDataReceived(data) {
var i;
for (i = 0; i < data.length; i++) { // Loop through data array
var txt = data[i].target; // Create the variable to store the data target
var j;
for (j = 0; j <= txt.length; j++) { // Loop through the data target
var newObj = txt.slice(2,j); // Remove "up"
var filteredObj = newObj // Change over to JSON format...
.replace(/=/g,' : ')
.replace(/,/g,', ')
.replace(/{/g,'{ ')
.replace(/cluster/g,'"cluster"')
.replace(/component/g,'"component"')
.replace(/datacenter/g,'"datacenter"')
}
var dataObj = filteredObj.replace(/_"cluster"/gi,'_cluster');
var finalObj = JSON.parse(dataObj);
console.log("finalObj", dataObj);
}
}
我想要的是一个具有正确 JSON 格式的单个数组,用于传入的数据(目标)。
【问题讨论】:
-
什么是
data?data [datapoints: [0..1..] target: "up{cluster="bluehills_c3260_cluster",component="atr",datacenter="bluehills",hostname="ny-153-177"...}"] -
根据我开发
Grafana插件的经验,data可能是一个列表。它应该由一个数据点数组组成,其中数组中的每个项目只是另一个长度为 2 的数组。Pos 0 是时间 Pos 1 是值。例如。{ datapoints: [ [10000, 20], [20000, 30] ], target: "Blah", somethingElse: {} }
标签: javascript arrays json grafana