content: package com.alibaba.json.bvt.annotation;
  
  import java.lang.reflect.Type;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.JSONReader;
  import com.alibaba.fastjson.annotation.JSONType;
  import com.alibaba.fastjson.parser.DefaultJSONParser;
  import com.alibaba.fastjson.parser.deserializer.ObjectDeserializer;
  
  import junit.framework.TestCase;
  
  public class CustomDeserializerTest extends TestCase {
      public void test_0() throws Exception {
          String text = "{\"xid\":1001}";
          Model model = JSON.parseObject(text, Model.class);
          Assert.assertEquals(1001, model.id);
      }
      
      @JSONType(deserializer=ModelDeserializer.class)
      public static class Model {
          public int id;
      }
      
      public static class ModelDeserializer implements ObjectDeserializer {
          @Override
          public <T> T deserialze(DefaultJSONParser parser, Type type, Object fieldName) {
              JSONReader reader = new JSONReader(parser);
              
              reader.startObject();
              
              String key = reader.readString();
              Integer value = reader.readInteger();
              
              Model model = new Model();
              model.id = value;
              
              reader.endObject();
              // TODO Auto-generated method stub
              return (T) model;
          }
  
          @Override
          public int getFastMatchToken() {
              return 0;
          }
          
      }
  }
  