content: package com.alibaba.json.bvt.annotation;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.annotation.JSONField;
  import com.alibaba.fastjson.serializer.JSONSerializer;
  import com.alibaba.fastjson.serializer.ObjectSerializer;
  import junit.framework.TestCase;
  import org.junit.Assert;
  
  import java.io.IOException;
  import java.lang.reflect.Type;
  
  /**
   * @author by laugh on 16/9/28 12:08.
   */
  public class SerializeUsingWhenString extends TestCase {
      public void test_annotation() throws Exception {
          Model model = new Model();
          model.value = "100";
          Assert.assertEquals("{\"value\":\"100元\"}", JSON.toJSONString(model));
  
          ModelWithOutJsonField modelWithOutJsonField = new ModelWithOutJsonField();
          modelWithOutJsonField.value = "100";
          Assert.assertEquals("{\"value\":\"100\"}", JSON.toJSONString(modelWithOutJsonField));
      }
  
      public static class Model {
  
          @JSONField(serializeUsing = ModelValueSerializer.class)
          public String value;
      }
  
      public static class ModelWithOutJsonField {
  
          public String value;
      }
  
      public static class ModelValueSerializer implements ObjectSerializer {
  
          public void write(JSONSerializer serializer, Object object, Object fieldName, Type fieldType,
                            int features) throws IOException {
              String value = (String) object;
              String text = value + "元";
              serializer.write(text);
          }
      }
  }
  