数据没有以正确的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格式的单个数组,用于输入的数据(目标)。
答案 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;
});
}