小编Bou*_*uis的帖子

Jackson 多态序列化生成错误的类名

当我使用 Jackson 多态序列化时,它会生成一个带有不正确的完全限定类名的 JSON 对象。

下面的代码序列化一个 XMLGregorianCalendar。输出是:

["java.util.GregorianCalendar",-3600000]
Run Code Online (Sandbox Code Playgroud)

我期望以下内容:

["javax.xml.datatype.XMLGregorianCalendar",-3600000]
Run Code Online (Sandbox Code Playgroud)

为什么它输出 java.util.GregorianCalendar?

或者更重要的是:我该如何解决这个问题?

代码示例:

import com.fasterxml.jackson.databind.ObjectMapper;

import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;
import java.io.ByteArrayOutputStream;

public class JacksonGregorianProblem {

    public static void main(String[] args) throws java.io.IOException, DatatypeConfigurationException {

        XMLGregorianCalendar xmlGregorianCalendar = DatatypeFactory.newInstance().newXMLGregorianCalendar();
        ObjectMapper mapper = new ObjectMapper();
        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);

        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        mapper.writeValue(byteArrayOutputStream, xmlGregorianCalendar);

        System.out.println(byteArrayOutputStream);
    }
}
Run Code Online (Sandbox Code Playgroud)

java gregorian-calendar jackson xmlgregoriancalendar

6
推荐指数
1
解决办法
1344
查看次数