Skip to content

Commit 60aa96c

Browse files
digeomelNoNameProvided
authored andcommitted
fix: properly deserialize null fields with discriminated type
1 parent 697724f commit 60aa96c

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/TransformOperationExecutor.ts

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,17 @@ export class TransformOperationExecutor {
170170
if (metadata.options && metadata.options.discriminator && metadata.options.discriminator.property && metadata.options.discriminator.subTypes) {
171171
if (!(value[valueKey] instanceof Array)) {
172172
if (this.transformationType === TransformationType.PLAIN_TO_CLASS) {
173-
type = metadata.options.discriminator.subTypes.find((subType) => subType.name === subValue[metadata.options.discriminator.property]);
173+
type = metadata.options.discriminator.subTypes.find((subType) => {
174+
if (subValue && metadata.options.discriminator.property in subValue) {
175+
return subType.name === subValue[metadata.options.discriminator.property]
176+
}
177+
});
174178
type === undefined ? type = newType : type = type.value;
175-
if (!metadata.options.keepDiscriminatorProperty) delete subValue[metadata.options.discriminator.property];
179+
if (!metadata.options.keepDiscriminatorProperty) {
180+
if (subValue && metadata.options.discriminator.property in subValue) {
181+
delete subValue[metadata.options.discriminator.property];
182+
}
183+
}
176184
}
177185
if (this.transformationType === TransformationType.CLASS_TO_CLASS) {
178186
type = subValue.constructor;

0 commit comments

Comments
 (0)