【问题标题】:Angular Typescript Json CastAngular Typescript Json Cast
【发布时间】:2020-08-05 11:12:18
【问题描述】:

我有一个问题,如下所述。

API:

 "Data": [
  {
    "Id": 90110,        
    "Name": "John",
    "Surname": "Doe",       
    "Email": "johndoe@gmail.com",    
    "Status": "Active"
  },
  {
    "Id": 90109,
    "Name": "Sally",
    "Surname": "Doe",        
    "Email": "sallydoe@gmail.com",  
    "MiddleName":"II",           
    "Status": "Active"
  }]

如您所见。可以为空的财产没有联系到我。我将该 JSON 解析为我的打字稿类。但是在我的班级中未定义 MiddleName 属性。我使用该类导出到excel。由于 MiddleName 为 null,我的 excel 导出如下所示。我该如何处理这种情况?如何设置默认的 null 未定义属性?

User Export P.S:我正在使用“xlsx”库进行 excel 导出。

【问题讨论】:

  • 你的问题一点都不清楚。请阅读并尝试理解
  • 配置您的 API/无论数据来自什么,以包含空值。
  • 你的数据库是什么?您可以在 API 中填写空字段。
  • 谢谢。我不想更改 API。我可以在 Angular 部分处理这种情况吗?有可能吗?

标签: json angular typescript


【解决方案1】:

您说您“将 JSON 解析为我的打字稿类”,但您没有显示该类的代码或解析代码,因此我们无法为您调试。

但是,假设您已经定义了一个具有与 JSON 完全匹配的属性的类,并且假设您在 JSON 中缺少某个属性时需要一个空字符串, 你可以用你的 API 请求的结果做这样的事情:

const data = apiJson.map( (person) => {
    Object.assign(
       new Person(), 
       {
         Id: person.Id,
         Name: person.Name || '',
         Surname: person.Surname || '' ,        
         Email: person.Email || '',  
         MiddleName: person.MiddleName || '',           
         Status: person.Status || ''
       }
    )
});

如果你的类没有方法,你应该把它改成接口,并省略对象的构造和 Object.assign(),如下所示:

const data = apiJson.map( (person) => {
       return {
         Id: person.Id,
         Name: person.Name || '',
         Surname: person.Surname || '' ,        
         Email: person.Email || '',  
         MiddleName: person.MiddleName || '',           
         Status: person.Status || ''
       }
 });

【讨论】:

    猜你喜欢
    • 2017-11-18
    • 2018-03-28
    • 1970-01-01
    • 2016-03-30
    • 2019-11-07
    • 2020-10-16
    • 2022-01-06
    • 2018-06-28
    • 1970-01-01
    相关资源
    最近更新 更多