content: package com.alibaba.json.bvt.bug;
  
  import java.io.IOException;
  import java.lang.reflect.Type;
  import java.util.HashMap;
  import java.util.Map;
  
  import org.junit.Assert;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.parser.deserializer.ExtraProcessable;
  import com.alibaba.fastjson.serializer.JSONSerializable;
  import com.alibaba.fastjson.serializer.JSONSerializer;
  
  import junit.framework.TestCase;
  
  public class Bug_for_issue_265 extends TestCase {
  
      public void test_for_issue() throws Exception {
          User user = new User();
          user.setName("wenshao");
          
          String text = JSON.toJSONString(user);
          
          Assert.assertEquals("{\"name\":\"wenshao\"}", text);
          
      }
      
      public void test_for_issue_decode() throws Exception {
          String text = "{\"name\":\"wenshao\",\"id\":1001}";
          
          User user = JSON.parseObject(text, User.class);
          Assert.assertEquals("wenshao", user.getName());
          Assert.assertEquals(1001, user.getAttribute("id"));
      }
  
      public static class Model implements JSONSerializable, ExtraProcessable {
  
          protected Map<String, Object> attributes = new HashMap<String, Object>();
  
          public Map<String, Object> getAttributes() {
              return attributes;
          }
          
          public Object getAttribute(String name) {
              return attributes.get(name);
          }
  
          @Override
          public void write(JSONSerializer serializer, Object fieldName, Type fieldType,
                            int features) throws IOException {
              serializer.write(attributes);
          }
  
          @Override
          public void processExtra(String key, Object value) {
              attributes.put(key, value);
          }
      }
  
      public static class User extends Model {
  
          public String getName() {
              return (String) attributes.get("name");
          }
  
          public void setName(String name) {
              attributes.put("name", name);
          }
      }
  }
  