【问题标题】:Convert JSON array of objects which have one object each to a JSON array of objects [closed]将每个具有一个对象的 JSON 对象数组转换为 JSON 对象数组 [关闭]
【发布时间】:2019-07-29 03:58:37
【问题描述】:

我有一个对象数组,每个元素中都有一个对象,看起来像这样

[
  {
    "person": {
    "name": "John",          
    "isActive": true,
    "id": 1
   }
 },
 {
    "person": {
    "name": "Ted",          
    "isActive": true,
    "id": 2
   }
 }
]

我想把它转换成这种没有类名的格式:

[
  {
    "Name": "John",
    "IsActive": true,
    "id": 1
  },
  {
    "Name": "Ted",
    "IsActive": true,
    "id": 2
  }
]

结果将允许我将信息解析为 Kendo UI 网格。转换正在 Typescript 文件中完成。

【问题讨论】:

  • 我看到评论被搁置,因为它太宽泛了。通过stackoverflow定义“......如果你的问题可以被整本书回答,或者有很多有效的答案(但无法确定哪个 - 如果有的话 - 是正确的),那么它可能对我们的格式来说太宽泛了”。从下面的答案中我可以清楚地看到,代表我对 data.map 缺乏了解。我确实得到了我需要的答案。在我提出问题之前我进行了搜索,但我的搜索结果没有显示地图,因为我一直使用关键字“convert”。

标签: javascript json typescript


【解决方案1】:

你可以使用.map方法

const arr = [{"person": {"name": "John","isActive": true,"id": 1}},{"person": {"name": "Ted","isActive": true,"id": 2}}]
.map(({ person }) => {
  return {
    "Name": person.name,
    "IsActive": person.isActive,
    "id": person.id
  }
})

console.log(arr)

【讨论】:

    【解决方案2】:

    非常简单 people.map(p=>p.person)

    var people=[
      {
        "person": {
        "name": "John",          
        "isActive": true,
        "id": 1
       }
     },
     {
        "person": {
        "name": "Ted",          
        "isActive": true,
        "id": 2
       }
     }
    ]
    
    var newPeople=people.map(p=>p.person)
    
    console.log(newPeople)

    【讨论】:

      【解决方案3】:

      您可以映射解构后的属性person

      var data = [{ person: { name: "John", isActive: true, id: 1 } }, { person: { name: "Ted", isActive: true, id: 2 } }],
          result = data.map(({ person }) => person);
      
      console.log(result);
      .as-console-wrapper { max-height: 100% !important; top: 0; }

      【讨论】:

        【解决方案4】:

        使用map 并返回一个带有所需键的对象

        let data = [{
            "person": {
              "name": "John",
              "isActive": true,
              "id": 1
            }
          },
          {
            "person": {
              "name": "Ted",
              "isActive": true,
              "id": 2
            }
          }
        ];
        
        
        let newData = data.map(function(item) {
          return {
            Name: item.person.name,
            IsActive: item.person.isActive,
            id: item.person.id
          };
        });
        
        console.log(newData)

        【讨论】:

        • 感谢您的回答。我能够将旧对象映射到新对象,并意识到这也修复了变量名称 -> 名称的差异。它也成功地出现在了剑道 UI 网格中
        • @Sniipe 乐于助人
        猜你喜欢
        • 1970-01-01
        • 2020-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-01
        • 1970-01-01
        • 2021-07-09
        相关资源
        最近更新 更多