繁体   English   中英

如何更改 angular 中的 json 响应格式

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM