2016-07-25 277 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);