Grafana中数据对象的JSON格式问题

时间:2019-02-07 00:12:08

标签: javascript arrays json grafana

数据没有以正确的JSON格式输入,因此我必须遍历数组中的项以修复格式,解析更改的项,并且当所有操作完成时我无法使用新对象,因为它不再位于数组中。数据输入如下: 数据[数据点:[0..1 ..] 目标:“ up {cluster =” bluehills_c3260_cluster“,component =” atr“,datacenter =” bluehills“,主机名=” 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格式的单个数组,用于输入的数据(目标)。

2 个答案:

答案 0 :(得分:0)

怎么样?

const myReg = /([\w\s]+)=\"([^"]*)\"/g
const str = `data [datapoints: [0..1..] target: "up{cluster="bluehills_c3260_cluster",component="atr",datacenter="bluehills",hostname="ny-153-177"...}"]`;
let matches = null;
const resultsJson = {};
while(matches = myReg.exec(str)){
    resultsJson[matches[1]] = matches[2];
}   
  

{群集:“ bluehills_c3260_cluster”,     组件:“ atr”,     数据中心:“ bluehills”,     主机名:“ ny-153-177”}

不确定这是否是存储数据的方式,但是该部分很容易自定义。

答案 1 :(得分:0)

onDataReceived(data){
    this.createCosmo(data);
  }

  createCosmo(data) {

    var arr = $.map(data,function(value){
      return value.target;
    });

    var arr2 = $.map(arr,function(value){
     var newObj = value.slice(2);  // 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"')
         .replace(/hostname/g,'"hostname"')
         .replace(/instance/g,'"instance"')
         .replace(/job/g,'"job"')
         .replace(/resilience_group/g,'"resilience_group"')
         .replace(/_"cluster"/gi,'_cluster')
         .replace(/-"cluster"/gi,'-cluster');
         var finalObj = JSON.parse(filteredObj);  // Parse the Object into JSON
         return finalObj;
    });

}