2016-07-25 278 views
2

我想更改我的json结构,我该怎么做?如何将json结构更改为另一个json结构

即时得到一个json,看起来像这样:

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

,但我需要它在这个结构中:

body: { 
    bulks: [{ 
     "id": "111111", 
     "name": "exp1", 
     "status": 100000 
    }, { 
     "id": "222222", 
     "name": "exp2", 
     "status": 200000 
    }, { 
     "id": "333333", 
     "name": "exp3", 
     "status": 300000 
    }] 
} 

因为在我的HTML我想这样来阅读:

<div *ngIf="showingList"> 
    <div class="list-bg" *ngFor="#bulk of listBulks | async"> 
    ID: {{bulk.id}} name of item: {{bulk.name}} 
    </div> 
</div> 
+0

你尝试过什么?转换是一个简单的换行,你确定你有正确的数据? 'var listBulks = {body:{bulks:[oldBodyList]}};' – Sukima

+0

@Sukima我在哪里添加这个转换你建议?我没有尝试过任何东西,但我不知道该怎么尝试...... –

+0

哪里有把你的JavaScript。不Angular有JavaScript吗?这是我能做的最好的事情。也许其他使用Angular的人知道更多。 – Sukima

回答

1

您可以用做减少:

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; 
}, []); 
+0

它是一个很好的答案。只是一个指针,'array.reduce'具有兼容性问题。请提一下 – Rajesh

1

这是我的解决方案。

var req = { 
 

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

 

 
var res = { 
 
\t bulks: [] 
 
}; 
 
for (var key in req) { 
 
    if (req.hasOwnProperty(key)) { 
 
    var temp = req[key]; 
 
    temp["id"] = key; 
 
    res.bulks.push(temp); 
 
    } 
 
} 
 

 
console.log(res);