content: package com.alibaba.json.bvt.bug;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.JSONArray;
  import junit.framework.TestCase;
  
  import javax.xml.datatype.DatatypeFactory;
  import javax.xml.datatype.XMLGregorianCalendar;
  import java.util.ArrayList;
  import java.util.Date;
  import java.util.GregorianCalendar;
  import java.util.List;
  
  /**
   * Created by wenshao on 11/03/2017.
   */
  public class Issue1023 extends TestCase {
      public void test_for_issue() throws Exception {
          Date now = new Date();
  
          GregorianCalendar gregorianCalendar = (GregorianCalendar) GregorianCalendar.getInstance();
          gregorianCalendar.setTime(now);
  
          XMLGregorianCalendar calendar = DatatypeFactory.newInstance().newXMLGregorianCalendar(gregorianCalendar);
  
          String jsonString = JSON.toJSONString(calendar);
          // success
          calendar = JSON.parseObject(jsonString, XMLGregorianCalendar.class);
  
          Object toJSON1 = JSON.toJSON(calendar); // debug看到是 Long 类型
          // 所以这里会报错：
          // error: java.lang.ClassCastException: java.lang.Long cannot be cast to com.alibaba.fastjson.JSONObject
          //JSONObject jsonObject = (JSONObject) JSON.toJSON(calendar);
          // 所以 这里肯定会报错， 因为 jsonObject 不是JSONObject类型
          //calendar = jsonObject.toJavaObject(XMLGregorianCalendar.class);
  
          List<XMLGregorianCalendar> calendarList = new ArrayList<XMLGregorianCalendar>();
          calendarList.add(calendar);
          calendarList.add(calendar);
          calendarList.add(calendar);
  
          Object toJSON2 = JSON.toJSON(calendarList); // debug 看到是 JSONArray 类型
  
          // success： 通过 JSONArray.parseArray 方法可以正确转换
          JSONArray jsonArray = (JSONArray) JSON.toJSON(calendarList);
          jsonString = jsonArray.toJSONString();
          List<XMLGregorianCalendar> calendarList1 = JSONArray.parseArray(jsonString, XMLGregorianCalendar.class);
  
          // 通过 jsonArray.toJavaList 无法转换
          // error: com.alibaba.fastjson.JSONException: can not cast to : javax.xml.datatype.XMLGregorianCalendar
          List<XMLGregorianCalendar> calendarList2 = jsonArray.toJavaList(XMLGregorianCalendar.class);
          assertNotNull(calendarList2);
          assertEquals(3, calendarList2.size());
      }
  }
  