In Jackson 2, the special character ~ was parsed as a NullNode, while in Jackson 3 I get a StringNode with value ~. It seems that the default behavior has changed.
I tried several YAML mapper configurations, but I couldn’t find any setting that reproduces the Jackson 2 behavior.
The issue can be reproduced with the following test:
@Test
void tilde() throws JsonProcessingException {
String rawDescriptor = """
specVersion: v1
kind: com.example.kind
name: "mnp_up"
state: ~
description: "a description"
""";
tools.jackson.dataformat.yaml.YAMLMapper myYamlMapper = new YAMLMapper();
JsonNode node1 = myYamlMapper.readValue(rawDescriptor, tools.jackson.databind.JsonNode.class);
com.fasterxml.jackson.databind.ObjectMapper objectMapper = new com.fasterxml.jackson.databind.ObjectMapper(new YAMLFactory());
com.fasterxml.jackson.databind.JsonNode node2 = objectMapper.readValue(rawDescriptor, com.fasterxml.jackson.databind.JsonNode.class);
System.out.println("node1 state: " + node1.get("state").getNodeType() + "\nnode2 state: " + node2.get("state").getNodeType());
}
OUTPUT:
node1 state: STRING
node2 state: NULL
I couldn’t find anything about this in the migration documentation.
Since my application logic depends on parsing files that may contain this special character, I need to stay compatible with the behavior implemented in Jackson 2.
How can I configure the Jackson 3 mapper to get the same result as in Jackson 2?
In Jackson 2, the special character ~ was parsed as a NullNode, while in Jackson 3 I get a StringNode with value ~. It seems that the default behavior has changed.
I tried several YAML mapper configurations, but I couldn’t find any setting that reproduces the Jackson 2 behavior.
The issue can be reproduced with the following test:
OUTPUT:
node1 state: STRING
node2 state: NULL
I couldn’t find anything about this in the migration documentation.
Since my application logic depends on parsing files that may contain this special character, I need to stay compatible with the behavior implemented in Jackson 2.
How can I configure the Jackson 3 mapper to get the same result as in Jackson 2?