From c9e71ed6c60745d7565355b1de01329c2d02b623 Mon Sep 17 00:00:00 2001 From: Marcos Passos Date: Tue, 3 Mar 2020 11:27:57 -0300 Subject: [PATCH] Fix deserialization of null values to result in JsonValue.NULL --- .../datatype/jsr353/JsonValueDeserializer.java | 7 +++++++ .../datatype/jsr353/SimpleDeserializeTest.java | 16 ++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/src/main/java/com/fasterxml/jackson/datatype/jsr353/JsonValueDeserializer.java b/src/main/java/com/fasterxml/jackson/datatype/jsr353/JsonValueDeserializer.java index 1005027..2695fad 100644 --- a/src/main/java/com/fasterxml/jackson/datatype/jsr353/JsonValueDeserializer.java +++ b/src/main/java/com/fasterxml/jackson/datatype/jsr353/JsonValueDeserializer.java @@ -1,7 +1,9 @@ package com.fasterxml.jackson.datatype.jsr353; +import com.fasterxml.jackson.databind.JsonMappingException; import java.io.IOException; +import javax.json.Json; import javax.json.JsonArrayBuilder; import javax.json.JsonBuilderFactory; import javax.json.JsonObjectBuilder; @@ -36,6 +38,11 @@ public JsonValue deserialize(JsonParser p, DeserializationContext ctxt) } } + @Override + public Object getNullValue(final DeserializationContext ctxt){ + return JsonValue.NULL; + } + @Override public Object deserializeWithType(JsonParser p, DeserializationContext ctxt, TypeDeserializer typeDeser) diff --git a/src/test/java/com/fasterxml/jackson/datatype/jsr353/SimpleDeserializeTest.java b/src/test/java/com/fasterxml/jackson/datatype/jsr353/SimpleDeserializeTest.java index 41f01ac..07b44fe 100644 --- a/src/test/java/com/fasterxml/jackson/datatype/jsr353/SimpleDeserializeTest.java +++ b/src/test/java/com/fasterxml/jackson/datatype/jsr353/SimpleDeserializeTest.java @@ -1,5 +1,6 @@ package com.fasterxml.jackson.datatype.jsr353; +import com.fasterxml.jackson.databind.json.JsonMapper; import javax.json.*; import javax.json.JsonValue.ValueType; @@ -100,4 +101,19 @@ public void testBinaryNode() throws Exception String str = ((JsonString) v2).getString(); assertEquals("AA==", str); // single zero byte } + + public void testNullNode() throws Exception + { + final JsonMapper mapper = mapperBuilder().build(); + + final String serializedNull = mapper.writeValueAsString(JsonValue.NULL); + + assertEquals("null", serializedNull); + + final JsonValue deserializedNull = mapper.readValue(serializedNull, JsonValue.class); + + assertNotNull(deserializedNull); + + assertEquals(JsonValue.NULL, deserializedNull); + } }