Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将json结构更改为另一个json结构_Javascript_Json_Html_Angular - Fatal编程技术网

Javascript 如何将json结构更改为另一个json结构

Javascript 如何将json结构更改为另一个json结构,javascript,json,html,angular,Javascript,Json,Html,Angular,我想改变我的json结构,我该怎么做 我得到的json看起来像这样: body: { "111111": { "name": "exp1", "status": 10000 }, "222222": { "name": "exp2", "status": 20000 }, "333333": { "name": "exp3", "stat

我想改变我的json结构,我该怎么做

我得到的json看起来像这样:

 body: {
     "111111": {
         "name": "exp1",
         "status": 10000
     },
     "222222": {
         "name": "exp2",
         "status": 20000
     },
     "333333": {
         "name": "exp3",
         "status": 30000
     }
 }
<div *ngIf="showingList">
  <div class="list-bg"  *ngFor="#bulk of listBulks | async">
    ID: {{bulk.id}} name of item: {{bulk.name}}
  </div>
</div>
但我需要它在这个结构中:

 body: {
     bulks: [{
         "id": "111111",
         "name": "exp1",
         "status": 100000
     }, {
         "id": "222222",
         "name": "exp2",
         "status": 200000
     }, {
         "id": "333333",
         "name": "exp3",
         "status": 300000
     }]
 }
因为在我的html中,我想这样读:

 body: {
     "111111": {
         "name": "exp1",
         "status": 10000
     },
     "222222": {
         "name": "exp2",
         "status": 20000
     },
     "333333": {
         "name": "exp3",
         "status": 30000
     }
 }
<div *ngIf="showingList">
  <div class="list-bg"  *ngFor="#bulk of listBulks | async">
    ID: {{bulk.id}} name of item: {{bulk.name}}
  </div>
</div>

ID:{bulk.ID}项的名称:{{bulk.name}
使用对象#条目和带有扩展运算符的数组#映射

const data={body:{111111:{name:“exp1”,状态:1e4},2222222:{name:“exp2”,状态:2e4},333333:{name:“exp3”,状态:3e4}};
常量res={body:{bulk:Object
.条目(data.body)
.map(a=>({id:a[0],…a[1]}))};

控制台日志(res)您可以使用reduce:

var body = {
    "111111": {
        "name": "exp1",
        "status": 10000
    },
    "222222": {
        "name": "exp2",
        "status": 20000
    },
    "333333": {
        "name": "exp3",
        "status": 30000
    }
}

var bodyArray = Object.keys(body).reduce(function(result, key) {
    var item = body[key];
    item.id = key;
    result.push(item)
    return result;
}, []);

作为
reduce
的最简单替代方法,您可以使用
map()
函数

const body={
"111111": {
“名称”:“exp1”,
“地位”:10000
},
"222222": {
“名称”:“exp2”,
“地位”:20 000
},
"333333": {
“名称”:“exp3”,
“地位”:30000
}
}
const newArray=Object.keys(body).map(function(key){
常量newObject={
id:钥匙,
…正文[键]
};
返回newObject;
});

log(newArray)你试过什么?转换是简单的换行。您确定数据正确吗<代码>var listBulks={body:{bulks:[oldboylist]}@Sukima您建议在哪里添加此转换?我没有尝试任何东西,但我不知道尝试什么…无论你把你的JavaScript放在哪里。你没有JavaScript吗?这是我能做的最好的了。也许其他使用Angular的人知道的更多。为什么要转换它?这是个好答案。只有一个指针,
array.reduce
存在兼容性问题。别提了