package com.alibaba.json.bvt.date; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import junit.framework.TestCase; import org.junit.Assert; import javax.xml.datatype.DatatypeFactory; import javax.xml.datatype.XMLGregorianCalendar; import java.util.GregorianCalendar; public class XMLGregorianCalendarTest extends TestCase { public void test_for_issue() throws Exception { GregorianCalendar gregorianCalendar = (GregorianCalendar) GregorianCalendar.getInstance(); XMLGregorianCalendar calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar); String text = JSON.toJSONString(calendar); Assert.assertEquals(Long.toString(gregorianCalendar.getTimeInMillis()), text); XMLGregorianCalendar calendar1 = JSON.parseObject(text, XMLGregorianCalendar.class); assertEquals(calendar.toGregorianCalendar().getTimeInMillis(), calendar1.toGregorianCalendar().getTimeInMillis()); JSONObject jsonObject = new JSONObject(); jsonObject.put("calendar", calendar); String json = JSON.toJSONString(jsonObject); Model model = JSON.parseObject(json).toJavaObject(Model.class); assertEquals(calendar.toGregorianCalendar().getTimeInMillis(), model.calendar.toGregorianCalendar().getTimeInMillis()); } public static class Model { public XMLGregorianCalendar calendar; } }