2016-07-25 11 views
2

json構造を変更したいのですが、どうすればいいですか?json構造を別のjson構造のように変更するには

イムこのようになりますJSONを取得:

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

が、私はこのような構造で、それを必要とする:私のhtmlで

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

原因は、私はこのようにそれを読みたい:

<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:{bulkks:[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);