package com.alibaba.json.bvt.bug; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; import java.util.TimeZone; import org.junit.Assert; import junit.framework.TestCase; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.serializer.SerializerFeature; public class Bug_for_cnhans extends TestCase { protected void setUp() throws Exception { JSON.defaultTimeZone = TimeZone.getTimeZone("Asia/Shanghai"); JSON.defaultLocale = Locale.CHINA; } public void test_0() throws Exception { VO vo = new VO(); vo.setCalendar(Calendar.getInstance()); String text = JSON.toJSONString(vo); VO vo1 = JSON.parseObject(text, VO.class); Assert.assertEquals(vo.getCalendar().getTime(), vo1.getCalendar().getTime()); } public void test_format() throws Exception { VO vo = new VO(); vo.setCalendar(Calendar.getInstance(JSON.defaultTimeZone, JSON.defaultLocale)); String text = JSON.toJSONString(vo, SerializerFeature.WriteDateUseDateFormat); VO vo1 = JSON.parseObject(text, VO.class); Assert.assertEquals(vo.getCalendar().get(Calendar.YEAR), vo1.getCalendar().get(Calendar.YEAR)); Assert.assertEquals(vo.getCalendar().get(Calendar.MONTH), vo1.getCalendar().get(Calendar.MONTH)); Assert.assertEquals(vo.getCalendar().get(Calendar.DAY_OF_MONTH), vo1.getCalendar().get(Calendar.DAY_OF_MONTH)); Assert.assertEquals(vo.getCalendar().get(Calendar.HOUR_OF_DAY), vo1.getCalendar().get(Calendar.HOUR_OF_DAY)); Assert.assertEquals(vo.getCalendar().get(Calendar.MINUTE), vo1.getCalendar().get(Calendar.MINUTE)); Assert.assertEquals(vo.getCalendar().get(Calendar.SECOND), vo1.getCalendar().get(Calendar.SECOND)); } public void test_iso_format() throws Exception { VO vo = new VO(); vo.setCalendar(Calendar.getInstance()); String text = JSON.toJSONString(vo, SerializerFeature.UseISO8601DateFormat); VO vo1 = JSON.parseObject(text, VO.class); Assert.assertEquals(vo.getCalendar().get(Calendar.YEAR), vo1.getCalendar().get(Calendar.YEAR)); Assert.assertEquals(vo.getCalendar().get(Calendar.MONTH), vo1.getCalendar().get(Calendar.MONTH)); Assert.assertEquals(vo.getCalendar().get(Calendar.DAY_OF_MONTH), vo1.getCalendar().get(Calendar.DAY_OF_MONTH)); Assert.assertEquals(vo.getCalendar().get(Calendar.HOUR_OF_DAY), vo1.getCalendar().get(Calendar.HOUR_OF_DAY)); Assert.assertEquals(vo.getCalendar().get(Calendar.MINUTE), vo1.getCalendar().get(Calendar.MINUTE)); Assert.assertEquals(vo.getCalendar().get(Calendar.SECOND), vo1.getCalendar().get(Calendar.SECOND)); } public void test_toJavaObject() throws Exception { JSONObject obj = new JSONObject(); obj.put("d1", new Date()); obj.put("d2", System.currentTimeMillis()); obj.put("d3", GregorianCalendar.getInstance()); obj.put("d4", "2012-12-22"); obj.put("d5", "2012-12-22 12:11:11"); obj.put("d6", "2012-12-22 12:11:11.234"); obj.getObject("d1", Calendar.class); obj.getObject("d2", Calendar.class); obj.getObject("d3", Calendar.class); obj.getObject("d4", Calendar.class); obj.getObject("d5", Calendar.class); obj.getObject("d6", Calendar.class); obj.getObject("d1", GregorianCalendar.class); obj.getObject("d2", GregorianCalendar.class); obj.getObject("d3", GregorianCalendar.class); obj.getObject("d4", GregorianCalendar.class); obj.getObject("d5", GregorianCalendar.class); obj.getObject("d6", GregorianCalendar.class); } public static class VO { private Calendar calendar; public Calendar getCalendar() { return calendar; } public void setCalendar(Calendar calendar) { this.calendar = calendar; } } }