簡體   English   中英

如何 map JSON 鍵動態

[英]How to map a JSON key dynamically

所以我有一個來自 API 呼叫的初始 JSON object 。 我需要將此數據 map 到第二個 JSON object 然后由應用程序使用。 來自 API 調用的初始 object 看起來像這樣......

const initialData =  {
        "PersonId": 1234,
        "Surname": "Blogs",
        "Forename": "Joe"
        }

它需要看起來像這樣才能被前端消耗......

{
    "IdNumber": 1234,
    "Last_name": "Blogs",
    "First_name": "Joe"
}

一開始我寫這個...

const mappedData = (initialData) => {
   return {
        "IdNumber": initialData.PersonId,
        "Last_name": initialData.Surname,
        "First_name": initialData.Forename
   }
} 

這樣做的問題是缺乏靈活性。 如果 initialData 中要更改的鍵的名稱(例如,有人進入數據庫並決定 Forename 應該是 FirstName),那么我提取的數據不再正確映射並且我的應用程序中斷。 有人可以解釋如何/如果這可以動態完成嗎?

謝謝!

首先,我建議您和您團隊中的人員不要更改數據庫條目的名稱,並且找不到任何人這樣做的明確原因。 但是,如果您確實想更改名稱,最好的做法是在前端和后端都更改條目的名稱。

如果您仍想動態執行此操作,一個好方法是:

  1. 使用 JavaScript 方法 Object.keys() 獲取 object 的密鑰。
  2. Map 將 object 的值改為它們的新值名稱

這將是一個例子:


function changeObjectNames(initialData) {
  const keys = Object.keys(initialData);

  return {
        "IdNumber": initialData[keys[0]],
        "Last_name": initialData[keys[1]],
        "First_name": initialData[keys[2]]
  }
}

我提出的解決方案存在一個問題:數據可能以錯誤的順序出現。 就目前而言,這是我能提供的最佳答案。 因此,我建議您不要嘗試更改數據庫條目的名稱,除非絕對必要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM