[英]Mapping one JSON object to another
我有一個 REST API 接收一些 JSON 數據。 此數據中的字段來自另一個使用不同名稱來指代相同事物的記錄系統。
出於這個原因,我需要將傳入的 object 中的字段 map 到我將存儲在我們的數據庫中的 object 中的字段。 例如,傳入的 object 可能如下所示:
{
"caseId": 9876
"userId": 123456,
}
和傳出 object 將需要
{
"case_id": 9876
"user": {
"id": 123456
}
}
映射 caseId 之類的字段非常簡單。 但是對於像 userId 這樣的字段,我可能需要 map 他們深入嵌套對象的幾個層次,是否有任何庫或簡單的技術來進行這樣的映射? 理想的解決方案將允許我像這樣指定映射:
{
"caseId": "case_id",
"userId": "user.id"
{
我們可以按點split
,然后分配給適當的 object 名稱。
var original = { "caseId": 9876, "userId": 123456, } var mapping = { "caseId": "case_id", "userId": "user.id" } var result = {}; Object.entries(original).forEach(function([key, value]) { var new_name = mapping[key] if (new_name) { var arr = new_name.split("."); var pointer = result; for (var i = 0; i < arr.length - 1; i++) { pointer[arr[i]] = {} pointer = pointer[arr[i]]; } pointer[arr[arr.length - 1]] = value; } else { // default copy? result[key] = value; } }) console.log(result)
說到映射——我已經不再依賴庫了。 通常需要進行大量設置,並且永遠沒有完整的解決方案。 編寫一個方法更容易,它需要一個 model 並返回一個映射的 model
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.