当我使用 Jackson 多态序列化时,它会生成一个带有不正确的完全限定类名的 JSON 对象。
下面的代码序列化一个 XMLGregorianCalendar。输出是:
["java.util.GregorianCalendar",-3600000]
我期待以下内容:
["javax.xml.datatype.XMLGregorianCalendar",-3600000]
为什么会输出 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);
}
}