-
-
Notifications
You must be signed in to change notification settings - Fork 230
Closed
Milestone
Description
Strange behaviour of empty item in list (v2.7.3)
So I have next xml file TestList.xml
:
<TestList>
<items>
<item name="Item1"/>
<item name="Item2">
</item>
<item name="Item3"/>
<item name="Item4"/>
<item name="Item5"/>
</items>
</TestList>
But when I deserializing this file, I lost all items after item with name Item2
, so items: Item3
, Item4
, Item5
is lost. If I change this xml file to next format:
<TestList>
<items>
<item name="Item1"/>
<item name="Item2"/>
<item name="Item3"/>
<item name="Item4"/>
<item name="Item5"/>
</items>
</TestList>
All start working as expected.
In version 2.6.3
all work as expected...
Code listing
pom.xml
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.7.3</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.dataformat</groupId>
<artifactId>jackson-dataformat-xml</artifactId>
<version>2.7.3</version>
</dependency>
App.java
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.xml.XmlMapper;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
public class App {
public static void main(String[] args) throws IOException {
Path testListPath = Paths.get("TestList.xml");
ObjectMapper mapper = new XmlMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
TestList testList = mapper.readValue(Files.newInputStream(testListPath), TestList.class);
System.out.println();
}
}
TestList.java
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlElementWrapper;
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
import java.util.ArrayList;
public class TestList {
@JacksonXmlElementWrapper(useWrapping = true, localName = "items")
@JacksonXmlProperty(localName = "item")
public ArrayList<ListItem> items = new ArrayList<>();
}
ListItem.java
import com.fasterxml.jackson.dataformat.xml.annotation.JacksonXmlProperty;
public class ListItem {
@JacksonXmlProperty(isAttribute = true)
public String name;
}
Metadata
Metadata
Assignees
Labels
No labels