From 1ddafb60efa1ea31e6897d237fe11937def44a7a Mon Sep 17 00:00:00 2001 From: Sven Slootweg Date: Sat, 18 Aug 2018 16:34:40 +0200 Subject: [PATCH] Make null/undefined values deserialize correctly, especially for optional fields --- src/serialization/deserialize.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/serialization/deserialize.js b/src/serialization/deserialize.js index 3fdcd0e..ff72ab0 100644 --- a/src/serialization/deserialize.js +++ b/src/serialization/deserialize.js @@ -10,6 +10,8 @@ function isReference(serializedData) { return (serializedData != null && serializedData._d_sT === "cTR"); } +/* FIXME: Pass both key and value to custom deserializer */ + module.exports = function createDeserializer(topLevelType, topLevelData, typeMap, options = {}) { let seen = new Map(); let placeholders = createPlaceholderManager(); @@ -61,7 +63,9 @@ module.exports = function createDeserializer(topLevelType, topLevelData, typeMap } function deserializeEntry(rule, serializedData) { - if (rule._isCustomType) { + if (serializedData == null) { + return customDeserializer(serializedData); + } else if (rule._isCustomType) { return deserializeInstanceOrReference(rule, serializedData); } else if (rule._isCustomRegistryType) { return deserializeInstanceOrReference(rule._registry._getType(rule._name), serializedData);