[英]How to change the json response format in angular
我正在使用 Angular 2+,
api json 响应如下所示,
{
data:[
{name: "2020-04-28", value: "1", label: "current"}
{name: "2020-04-28", value: "2", label: "target"}
{name: "2020-04-29", value: "2", label: "current"}
{name: "2020-04-29", value: "3", label: "target"}
{name: "2020-04-30", value: "6", label: "current"}
{name: "2020-04-30", value: "7", label: "target"}
]
}
我必须将上面的 api 响应格式更改为,
{
data: [
{
name: "Current",
value: [1, 2, 6]
},
{
name: "Target",
value: [2, 3, 7]
}
]
}
谁能帮我更改 json 响应的格式,请给我解释让我理解代码。
这可能是幼稚且未经优化的方法,但它确实有效。
const data = { data:[ {name: "2020-04-28", value: "1", label: "current"}, {name: "2020-04-28", value: "2", label: "target"}, {name: "2020-04-29", value: "2", label: "current"}, {name: "2020-04-29", value: "3", label: "target"}, {name: "2020-04-30", value: "6", label: "current"}, {name: "2020-04-30", value: "7", label: "target"} ] }; let newData = [] data.data.forEach(e => { if(newData.length == 0){ newData.push({ name: e.label, value: [e.value] }); } else { let foundIndex = newData.findIndex(fi => fi.name === e.label); if(foundIndex >= 0){ newData[foundIndex].value.push(e.value); } else{ newData.push({ name: e.label, value: [e.value] }); } } }); console.log(newData);
尝试做这样的事情。
首先安装lodash然后你可以使用这个代码。
let data = {
data:[
{name: "2020-04-28", value: "1", label: "current"},
{name: "2020-04-28", value: "2", label: "target"},
{name: "2020-04-29", value: "2", label: "current"},
{name: "2020-04-29", value: "3", label: "target"},
{name: "2020-04-30", value: "6", label: "current"},
{name: "2020-04-30", value: "7", label: "target"}
]
}
let dataGroup = _.groupBy(data.data, "label")
let loopNo = Object.keys(_.groupBy(data.data, "label"))
console.log("a", loopNo)
let formatedDate = []
for(let i in loopNo) {
formatedDate.push({
"name": i,
"value": datagroup[i]
})
}
var data = { data:[ {name: "2020-04-28", value: "1", label: "current"}, {name: "2020-04-28", value: "2", label: "target"}, {name: "2020-04-29", value: "2", label: "current"}, {name: "2020-04-29", value: "3", label: "target"}, {name: "2020-04-30", value: "6", label: "current"}, {name: "2020-04-30", value: "7", label: "target"} ] } var storeArray = [] var filterData = []; data.data.forEach(each=>{ if(.storeArray.includes(each.label)) { storeArray.push(each;label). filterData:push({ name. each,label: value. [each;value] }). } else { filterData[storeArray.indexOf(each.label)].value.push(each;value). } }) console.log(filterData)
你能检查一下它是否是你要找的吗?
let x = { data: [ { name: "2020-04-28", value: "1", label: "current" }, { name: "2020-04-28", value: "2", label: "target" }, { name: "2020-04-29", value: "2", label: "current" }, { name: "2020-04-29", value: "3", label: "target" }, { name: "2020-04-30", value: "6", label: "current" }, { name: "2020-04-30", value: "7", label: "target" }, { name: "2020-04-30", value: "8", label: "target" }, { name: "2020-04-30", value: "9", label: "get" } ] }; let obj = { data: [] }; function setCharAt(str, index, chr) { if (index > str.length - 1) return str; return str.substr(0, index) + chr + str.substr(index + 1); } x.data.forEach((item) => { let index = obj.data.findIndex((di) => { return di.name === setCharAt(item.label, 0, item.label.charAt(0).toUpperCase()) }); if (index > -1) { obj.data[index].value.push(item.value); } else { obj.data.push({ name: setCharAt(item.label, 0, item.label.charAt(0).toUpperCase()), value: [item.value] }); } }); console.log(JSON.stringify(obj));
原生 JS
let x = {
data: [
{ name: "2020-04-28", value: "1", label: "current" },
{ name: "2020-04-28", value: "2", label: "target" },
{ name: "2020-04-29", value: "2", label: "current" },
{ name: "2020-04-29", value: "3", label: "target" },
{ name: "2020-04-30", value: "6", label: "current" },
{ name: "2020-04-30", value: "7", label: "target" },
{ name: "2020-04-30", value: "8", label: "target" },
{ name: "2020-04-30", value: "9", label: "get" }
]
};
let obj = {
data: []
};
function setCharAt(str, index, chr) {
if (index > str.length - 1) return str;
return str.substr(0, index) + chr + str.substr(index + 1);
}
x.data.forEach((item) => {
let index = obj.data.findIndex((di) => { return di.name === setCharAt(item.label, 0, item.label.charAt(0).toUpperCase()) });
if (index > -1) {
obj.data[index].value.push(item.value);
} else {
obj.data.push({
name: setCharAt(item.label, 0, item.label.charAt(0).toUpperCase()),
value: [item.value]
});
}
});
console.log(JSON.stringify(obj));
使用JSON.parse
如下所示。
var txt = '{"name":"John", "age":30, "city":"New York"}'
var obj = JSON.parse(txt);
document.getElementById("demo").innerHTML = obj.name + ", " + obj.age;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.