FasterXML / FasterXML/jackson-dataformats-text
Jackson 3 parses YAML ~ as StringNode instead of NullNode
- Dominant language
- Java
- Stars
- 455
- Forks
- 164
- Avg merge
- 6d 10h
- Merged PRs (30d)
- 2
Description
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?
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.