content: package com.alibaba.json.bvt.serializer;
  
  import java.text.SimpleDateFormat;
  import java.util.Locale;
  import java.util.TimeZone;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.serializer.JSONSerializer;
  import com.alibaba.fastjson.serializer.SerializeConfig;
  import com.alibaba.fastjson.serializer.SerializeWriter;
  import com.alibaba.fastjson.serializer.SerializerFeature;
  
  import junit.framework.TestCase;
  
  public class DateFormatSerializerTest extends TestCase {
      protected void setUp() throws Exception {
          JSON.defaultTimeZone = TimeZone.getTimeZone("Asia/Shanghai");
          JSON.defaultLocale = Locale.CHINA;
      }
      
      public void test_date() throws Exception {
          Assert.assertEquals("{\"format\":null}", JSON.toJSONString(new VO(), SerializerFeature.WriteMapNullValue));
      }
  
      public void test_date_2() throws Exception {
          SerializeWriter out = new SerializeWriter();
          SerializeConfig config = new SerializeConfig();
          JSONSerializer serializer = new JSONSerializer(out, config);
  
          serializer.config(SerializerFeature.WriteMapNullValue, true);
          serializer.write(new VO());
  
          Assert.assertEquals("{\"format\":null}", out.toString());
      }
  
      public void test_date_3() throws Exception {
          SerializeWriter out = new SerializeWriter();
          SerializeConfig config = new SerializeConfig();
          JSONSerializer serializer = new JSONSerializer(out, config);
  
          serializer.config(SerializerFeature.WriteClassName, true);
          serializer.write(new VO());
  
          Assert.assertEquals("{\"@type\":\"com.alibaba.json.bvt.serializer.DateFormatSerializerTest$VO\"}",
                              out.toString());
      }
  
      public void test_date_4() throws Exception {
          SerializeWriter out = new SerializeWriter();
          SerializeConfig config = new SerializeConfig();
          JSONSerializer serializer = new JSONSerializer(out, config);
  
          SimpleDateFormat format = new SimpleDateFormat("yyyy");
          format.setTimeZone(JSON.defaultTimeZone);
          serializer.write(new VO(format));
  
          Assert.assertEquals("{\"format\":\"yyyy\"}", out.toString());
          
          JSON.parseObject(out.toString(), VO.class);
      }
  
      private static class VO {
  
          private SimpleDateFormat format;
  
          public VO(){
  
          }
  
          public VO(SimpleDateFormat format){
              this.format = format;
          }
  
          public SimpleDateFormat getFormat() {
              return format;
          }
  
          public void setFormat(SimpleDateFormat format) {
              this.format = format;
          }
  
      }
  }
  