FasterXML / FasterXML/jackson-dataformats-text

Jackson 3 parses YAML ~ as StringNode instead of NullNode

Aperta
#661 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub
yaml
Lingua principale
Java
Stelle
455
Fork
164
Merge medio
6g 10h
PR unite (30g)
2

Descrizione

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?

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.