Javascript 如何分离JSON响应I';我越来越

Javascript 如何分离JSON响应I';我越来越,javascript,angularjs,json,highcharts,Javascript,Angularjs,Json,Highcharts,(其中时间戳1和时间戳2是有效的时间戳) 我使用Rest服务获取上述数据。我需要 以不同的方式展示它。必须这样转换,我将得到两个变量的响应,称为 { "Data": [{ "Rsrc": "DB", "status": "100", "TimeStamp": "TimeStamp1" }, { "Rsrc": "Oracle", "status": "0", "TimeStamp": "TimeStamp

(其中时间戳1和时间戳2是有效的时间戳)

我使用Rest服务获取上述数据。我需要 以不同的方式展示它。必须这样转换,我将得到两个变量的响应,称为

{
  "Data": [{
      "Rsrc": "DB",
      "status": "100",
      "TimeStamp": "TimeStamp1"
    },
    {
      "Rsrc": "Oracle",
      "status": "0",
      "TimeStamp": "TimeStamp1"
    },
    {
      "Rsrc": "Oracle",
      "status": "100",
      "TimeStamp": "TimeStamp2"
    },
    {
      "Rsrc": "DB",
      "status": "100",
      "TimeStamp": "TimeStamp2"
    }
  ]
}


提前感谢

我将您的数据循环并构建了两个新阵列。我使用了第三个rsrc数组来帮助确定数据数组中的哪个位置也要添加新项

var测试={
“数据”:[{
“Rsrc”:“DB”,
“状态”:“100”,
“时间戳”:“时间戳1”
},
{
“Rsrc”:“Oracle”,
“状态”:“0”,
“时间戳”:“时间戳1”
},
{
“Rsrc”:“Oracle”,
“状态”:“100”,
“时间戳”:“时间戳2”
},
{
“Rsrc”:“DB”,
“状态”:“100”,
“时间戳”:“时间戳2”
}
]
};
var类别=[];
var数据=[];
var rsrc=[];
测试['Data'].forEach(功能(项){
if(category.indexOf(项['TimeStamp'])=-1){
类别.推送(项目['TimeStamp']);
}
if(rsrc.indexOf(项['rsrc'])=-1){
rsrc.push(项目['rsrc']);
}
变量位置=rsrc.indexOf(项目['rsrc']);
//设置为自身或对象(如果尚未设置)
数据[pos]=数据[pos]|{};
数据[pos]。名称=项目['Rsrc'];
数据[pos]。数据=数据[pos]。数据| |[];
数据[pos].data.push(item.status);
});
控制台日志(类别);

控制台日志(数据)第一个很简单,只需将数据数组映射到只包含时间戳的数组,并将其导入
集合

Data=  [{
  name: 'DB',
  data: [100, 100]
}, {
  name: 'Oracle',
  data: [0, 100]
}] 
第二种方法要求您将数据简化为
Rsrc
映射为
status
数组,然后将其转换为数组

const obj={“Data”:[{“Rsrc”:“DB”,“status”:“100”,“TimeStamp”:“TimeStamp 1”},{“Rsrc”:“Oracle”,“status”:“0”,“TimeStamp”:“TimeStamp 1”},{“Rsrc”:“Oracle”,“status”:“100”,“TimeStamp”:“TimeStamp 2”},{“Rsrc”:“DB”,“status”:“100”,“TimeStamp”:“TimeStamp 2”}
常量数据=数组.from(对象数据.reduce)((地图,基准)=>{
让data=map.get(datum.Rsrc)| |[]
返回图.set(datum.Rsrc,data.concat(datum.status))
},新建映射())。映射(条目=>({
名称:条目[0],
数据:条目[1]
}))
console.info('Data',Data)
var输入={
“数据”:[{
“Rsrc”:“DB”,
“状态”:“100”,
“时间戳”:“时间戳1”
},
{
“Rsrc”:“Oracle”,
“状态”:“0”,
“时间戳”:“时间戳1”
},
{
“Rsrc”:“Oracle”,
“状态”:“100”,
“时间戳”:“时间戳2”
},
{
“Rsrc”:“DB”,
“状态”:“100”,
“时间戳”:“时间戳2”
}
]
};
var数据=输入数据;
var类别=[];
var数据=[];
var数据索引=[];
data.forEach(函数(i)
{
if(Category.indexOf(i.TimeStamp)=-1)Category.push(i.TimeStamp);
var idx=DataIndex.indexOf(i.Rsrc)
如果(idx==-1){
数据索引推送(i.Rsrc);
push({name:i.Rsrc,Data:[i.status]});
}否则{
数据[idx].Data.push(i.status);
}
});
控制台日志(类别);

控制台日志(数据)您的JSON响应无效。到目前为止您尝试了什么?为什么要将timeseries数据绘制为分类图?如果这样做,图表的真正本质将丢失。此代码存在问题,类别将有重复项,与插入之前一样,不检查是否存在。可能考虑使用<代码> MAP>代码> @ YASGARG1232,你指的是哪个项目?如果您查看输出,不是OP要求的吗?您的答案将返回
Category=[Timestamp1,Timestamp1,Timestamp2,Timestamp2]
,而预期输出是
Category=[Timestamp1,Timestamp2]
@yashgarg1232啊,是的,您是对的-很抱歉,我在问题中误解了这一点。谢谢很高兴我能帮忙。这是常有的事。
Data=  [{
  name: 'DB',
  data: [100, 100]
}, {
  name: 'Oracle',
  data: [0, 100]
}] 
const Category = Array.from(new Set(obj.Data.map(datum => datum.TimeStamp)))