Jackson

Xml

Maven

<dependency>    
    <groupId>com.fasterxml.jackson.dataformat</groupId>
    <artifactId>jackson-dataformat-xml</artifactId>
</dependency>

Ignore unknown fields

   public void run(String... args) throws Exception {

        File file = ResourceUtils.getFile("classpath:config.xml");
        InputStream inputStream = new FileInputStream(file);

        XmlMapper xmlMapper = new XmlMapper();
        xmlMapper.enable(JsonGenerator.Feature.IGNORE_UNKNOWN);
        xmlMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        Cruise cruise = xmlMapper.readValue(inputStream, new TypeReference<>() {
        });

        process(cruise);

        System.exit(0);
    }

For lists

@Data
public class Pipelines {
    private String group;    
    @JacksonXmlElementWrapper(useWrapping = false)    
    private List<Pipeline> pipeline = new ArrayList<>();
}

Json

PropertyOrder

@Data
@JsonPropertyOrder({"name", "count", "linesOfCode", "duplicates"})
public class DuplicateComponent {
    private String name;
    private int linesOfCode;
    private List<ProjectComponent> duplicates = new ArrayList<>();

    public int getCount() {
        return duplicates.size();
    }
}

Property

@Data
public class RootProject {
    @JsonProperty("components")
    private List<ProjectComponent> projectComponents;
    @JsonProperty("paging")
    private Paging paging;
}

Yaml

Maven

<dependency>
  <groupId>com.fasterxml.jackson.dataformat</groupId>
  <artifactId>jackson-dataformat-yaml</artifactId>
</dependency>

Setup mapper

        //do not put quotes over values
        mapper = new ObjectMapper(new YAMLFactory()
            .enable(YAMLGenerator.Feature.MINIMIZE_QUOTES));
        //ignore unknown
        mapper.enable(JsonGenerator.Feature.IGNORE_UNKNOWN);
        mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        // do not output null fields
        mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);

Pretty print

mapper.writerWithDefaultPrettyPrinter().writeValueAsString(applicationFile.getApplication())

Last updated