微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何动态映射 JSON 键

如何解决如何动态映射 JSON 键

所以我有一个来自 API 调用的初始 JSON 对象。我需要将此数据映射到第二个 JSON 对象,然后应用程序将使用该对象。 API 调用的初始对象看起来像这样...

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() 获取对象的键。
  2. 将对象的值映射到它们的新值名称

这将是一个例子:


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

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

我提出的解决方案存在一个问题:数据可能以错误的顺序出现。就目前而言,这是我能提供的最佳答案。因此,除非绝对必要,否则我建议您不要尝试更改数据库条目的名称。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。