简体   繁体   English

Jackson XML自定义字段解串器

[英]Jackson XML custom field deserializer

When using Jackson for JSON processing I extended JsonDeserializer<T> and was able to handle custom deserialization. 当使用Jackson进行JSON处理时,我扩展了JsonDeserializer<T>并能够处理自定义反序列化。 Is there a similar thing for processing XML with Jackson? 与杰克逊处理XML有类似的事情吗?

import java.util.List;

public class Something {

    private int iinteger;

    private String sstring;

    private List<String> sarray;

    public Something(int iinteger, String sstring, List<String> sarray) {
        this.iinteger = iinteger;
        this.sstring = sstring;
        this.sarray = sarray;
    }

    public Shit() {
    }

    public int getIinteger() {
        return iinteger;
    }

    public void setIinteger(int iinteger) {
        this.iinteger = iinteger;
    }

    public String getSstring() {
        return sstring;
    }

    public void setSstring(String sstring) {
        this.sstring = sstring;
    }

    public List<String> getSarray() {
        return sarray;
    }

    public void setSarray(List<String> dumb) {
        this.sarray = dumb;
    }
}

I want to deserialize from 我想反序列化

<?xml version="1.0"?>
<Something xmlns="">
    <iinteger>23</iinteger>
    <sstring>hey</sstring>
    <sarray >abc abd abv</sarray >
</Something>

Besides JSON, Jackson also de/serializes from/to XML . 除了JSON之外, Jackson对XML进行了序列化/序列化

You'll need the following dependency: 您需要以下依赖项:

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

In addition to standard Jackson annotations and optional JAXB annotations ( javax.xml.bind.annotation ), Jackson provides some XML-specific annotations . 除了标准的Jackson注释和可选的JAXB注释javax.xml.bind.annotation )之外,Jackson还提供了一些特定于XML的注释

Consider the following POJO as example: 以下面的POJO为例:

public class Simple {
    public int x = 1;
    public int y = 2;
}

You can serialize it to XML using: 您可以使用以下命令将其序列化为XML:

ObjectMapper xmlMapper = new XmlMapper();
String xml = xmlMapper.writeValueAsString(new Simple());

The result is: 结果是:

<Simple>
    <x>1</x>
    <y>2</y>
</Simple>

To deserialize: 要反序列化:

ObjectMapper xmlMapper = new XmlMapper();
Simple value = xmlMapper.readValue("<Simple><x>1</x><y>2</y></Simple>", Simple.class);

Yes, there is JAXB . 是的,有JAXB

Intro to JAXB JAXB简介

The reference implementation is called Project Kenai . 参考实现称为Project Kenai It's part of Metro (JAX-WS reference implementation), but it can be used standalone. 它是Metro(JAX-WS参考实现)的一部分,但它可以单独使用。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM