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
相关产品推荐
相关产品推荐

