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);
}
}
}