我有一个类,例如,我们说Car
具有以下结构:
@Serializable()
export default class Car {
@JsonProperty({
name: 'id'
})
private id!: string;
@JsonProperty({
name: 'name'
})
private name!: string;
@JsonProperty({
name: 'carOwner'
})
private carOwner!: Owner;
}
进一步我有Owner
类。
@Serializable()
export default class Owner{
@JsonProperty({
name: 'id'
})
private id!: string;
@JsonProperty({
name: 'name'
})
private name!: string;
@JsonProperty({
name: 'address'
})
private address!: string;
}
我有一个传入JSON对象,结构如下,我们叫它newCar
{
"id": "test-id",
"name": "test-car",
"carOwner": {
"id": "owner-id",
"name": "owner-name",
"address": "owner-address",
"gender": "owner-gender",
"age": "owner-age",
}
}
我想做的是,将newCar
JSON反序列化到Car
类。这就是当我反序列化newJson
时,我应该得到下面的对象,其中gender
和age
被过滤掉了。
{
"id": "test-id",
"name": "test-car",
"carOwner": {
"id": "owner-id",
"name": "owner-name",
"address": "owner-address"
}
}
但是现在我得到的是原来的newJson
。我正在使用的库(typescript-json-serializer
)似乎没有反序列化嵌套对象,这里是owner
。
如有任何意见,不胜感激。
这是到typescript-json-serializer包的链接
找到解决方案了。显然,我错过了在JsonProperty()
中添加一个参数。在Car
类中,对于carOwner
对象,我必须传递所有者的类型。
@JsonProperty({
name: 'carOwner',
type: Owner,
})
以上解决了我所面临的问题。