* Deserializes provided value. * * @param {TypeLike } x Some value. * @param {SerializerContext >} serializerContext Serializer context. * * @returns {TypeLike >} Deserialized value.
(x: TypeLike<any>, serializerContext: SerializerContext<Array<any>>)
| 66 | * @returns {TypeLike<Array<any>>} Deserialized value. |
| 67 | */ |
| 68 | public deserialize(x: TypeLike<any>, serializerContext: SerializerContext<Array<any>>): TypeLike<Array<any>> |
| 69 | { |
| 70 | if (x === undefined) |
| 71 | { |
| 72 | return serializerContext.deserializedDefaultValue; |
| 73 | } |
| 74 | |
| 75 | if (x === null) |
| 76 | { |
| 77 | return serializerContext.deserializedNullValue; |
| 78 | } |
| 79 | |
| 80 | if (Array.isArray(x)) |
| 81 | { |
| 82 | return serializerContext.restoreReference(x, () => |
| 83 | { |
| 84 | const arrayInput = x; |
| 85 | const arrayOutput = new Array<any>(x.length); |
| 86 | const genericSerializerContext = serializerContext.defineGenericSerializerContext(0); |
| 87 | const valueSerializerContext = genericSerializerContext.defineChildSerializerContext(); |
| 88 | const serializer = valueSerializerContext.serializer; |
| 89 | |
| 90 | valueSerializerContext.referenceValueSetter = (v, k) => arrayOutput[k] = v; |
| 91 | |
| 92 | for (let i = 0; i < arrayInput.length; i++) |
| 93 | { |
| 94 | valueSerializerContext.jsonPathKey = i; |
| 95 | |
| 96 | arrayOutput[i] = serializer.deserialize(arrayInput[i], valueSerializerContext); |
| 97 | } |
| 98 | |
| 99 | return arrayOutput; |
| 100 | }); |
| 101 | } |
| 102 | |
| 103 | serializerContext.logger.error('ArraySerializer', `${serializerContext.jsonPath}: cannot deserialize value as array.`, x); |
| 104 | |
| 105 | return undefined; |
| 106 | } |
| 107 | } |
nothing calls this directly
no test coverage detected