You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

typescript-json-serializer嵌套TypeScript类反序列化多余字段过滤问题

问题原因

你没有在Car类的carOwner字段的@JsonProperty装饰器中显式指定嵌套类的类型,库无法识别该字段需要反序列化为Owner类实例,只会直接将原JSON对象赋值给该字段,因此不会过滤多余字段。

解决方法

修改Car类中carOwner字段的装饰器配置,新增type参数指定嵌套类类型:

@Serializable()
export default class Car {
  @JsonProperty({
    name: 'id'
  })
  private id!: string;

  @JsonProperty({
    name: 'name'
  })
  private name!: string;

  // 新增type参数,函数返回值为嵌套的Owner类
  @JsonProperty({
    name: 'carOwner',
    type: () => Owner
  })
  private carOwner!: Owner;
}

反序列化调用示例

确保你使用库提供的deserialize方法传入目标类进行反序列化:

import { JsonSerializer } from 'typescript-json-serializer';

const serializer = new JsonSerializer();
const carInstance = serializer.deserialize(newCar, Car);

经过上述修改后,carOwner字段会被正确转换为Owner类实例,仅保留类中声明了@JsonProperty装饰器的id、name、address三个字段,gender、age等多余字段会被自动过滤。

补充注意项

如果你需要将最终实例转换为普通JSON对象输出,需要为类的私有属性添加对应的getter方法,或者直接将属性声明为public,否则转换后的对象无法读取到私有属性的值。


内容的提问来源于stack exchange,提问作者MuzaffarShaikh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:24:03