打字稿模型到json - 忽略空值属性

Posted

技术标签:

【中文标题】打字稿模型到json - 忽略空值属性【英文标题】:typescript model to json - Ignore null value property 【发布时间】:2018-11-09 21:11:18 【问题描述】:

在 Angular 4 应用程序中, 我的打字稿模型,

export class Person
  fname:string,
  lname?:string

lname 是可选的。在组件中填充如下模型

//Query form data
var people = form.get('people');

let model = new Person()
  fname: people.get('firstname'),
  lname: people.get('lastname')

在这种情况下,如果我尝试将我的模型转换为 json,当用户没有输入姓氏的值时。我的 json 输出如下所示,

 'fname': 'xyz', 'lname': null

预期结果:

但我想消除 json 中的所有空值属性。所以我期待

 'fname':'xyz'

但是当用户在 lname 处输入值时。 json 应该如下所示

'fname':'xyx', 'lname': 'abc'

我如何从打字稿模型中生成这个 json 结果

【问题讨论】:

【参考方案1】:

在插入值之前检查表单的 lastname 属性的内容。如果它不是字符串,则不要插入值,假设这是该属性包含的内容。

像这样:

//Query form data
var people = form.get('people');

const model = new Person();
model.fname = people.get('firstname');
if (typeof people.get('lastname') === 'string') 
  model.lname = people.get('lastname');

【讨论】:

谢谢。简单修复【参考方案2】:

我为此创建了一个实用程序库。也许它可以提供帮助。 https://www.npmjs.com/package/ngx-super-model

在扩展 Model 类的实例上使用 clean() 函数将删除 null、undefined 和 NaN。

【讨论】:

以上是关于打字稿模型到json - 忽略空值属性的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有嵌套数组的 JSON 对象映射到打字稿模型中?

kotlinx JSON.stringify 忽略空值

Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的

打字稿重载箭头功能不起作用

如何使用springframework BeanUtils copyProperties忽略空值?

空值合并运算符 angular 2