package com.alibaba.json.bvt.bug; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import com.alibaba.fastjson.parser.ParserConfig; import org.junit.Assert; import junit.framework.TestCase; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; public class Bug_for_Johnny extends TestCase { protected void setUp() throws Exception { ParserConfig.global.addAccept("com.alibaba.json.bvt.bug.Bug_for_Johnny."); } public void test_bug()throws Exception { MyObject myObject = new MyObject(); List<String> listObj = new LinkedList<String>(); Set<String> setObj = new HashSet<String>(); Map<String, String> mapObj = new HashMap<String, String>(); listObj.add("aaa"); listObj.add("bbb"); setObj.add("aaa"); setObj.add("bbb"); mapObj.put("key", "value"); myObject.setBoolType(true); myObject.setByteType(Byte.MIN_VALUE); myObject.setCharType(Character.MIN_VALUE); myObject.setDoubleType(Double.MIN_VALUE); myObject.setFloatType(Float.MIN_VALUE); myObject.setIntType(Integer.MIN_VALUE); myObject.setLongType(Long.MIN_VALUE); myObject.setShortType(Short.MIN_VALUE); myObject.setEnumType(EnumType.MD5); myObject.setStringType("aadf"); myObject.setMapType(mapObj); myObject.setSetType(setObj); myObject.setListType(listObj); String text = JSON.toJSONString(myObject, SerializerFeature.WriteClassName); System.out.println(text); MyObject myObject2 = (MyObject) JSON.parse(text); Assert.assertEquals(myObject2.getMapType(), myObject.getMapType()); } public static enum EnumType { MD5, SHA1 } public static class MyObject { private String stringType; private byte byteType; private short shortType; private int intType; private long longType; private char charType; private float floatType; private double doubleType; private boolean boolType; private List<String> ListType; private Map<String, String> mapType; private Set<String> setType; private EnumType enumType; public Set<String> getSetType() { return setType; } public void setSetType(Set<String> setType) { this.setType = setType; } /** * @return the stringType */ public String getStringType() { return stringType; } public EnumType getEnumType() { return enumType; } public void setEnumType(EnumType enumType) { this.enumType = enumType; } public List<String> getListType() { return ListType; } public void setListType(List<String> listType) { ListType = listType; } public Map<String, String> getMapType() { return mapType; } public void setMapType(Map<String, String> mapType) { this.mapType = mapType; } /** * @param stringType * the stringType to set */ public void setStringType(String stringType) { this.stringType = stringType; } /** * @return the byteType */ public byte getByteType() { return byteType; } /** * @param byteType * the byteType to set */ public void setByteType(byte byteType) { this.byteType = byteType; } /** * @return the shortType */ public short getShortType() { return shortType; } /** * @param shortType * the shortType to set */ public void setShortType(short shortType) { this.shortType = shortType; } /** * @return the intType */ public int getIntType() { return intType; } /** * @param intType * the intType to set */ public void setIntType(int intType) { this.intType = intType; } /** * @return the longType */ public long getLongType() { return longType; } /** * @param longType * the longType to set */ public void setLongType(long longType) { this.longType = longType; } /** * @return the charType */ public char getCharType() { return charType; } /** * @param charType * the charType to set */ public void setCharType(char charType) { this.charType = charType; } /** * @return the floatType */ public float getFloatType() { return floatType; } /** * @param floatType * the floatType to set */ public void setFloatType(float floatType) { this.floatType = floatType; } /** * @return the doubleType */ public double getDoubleType() { return doubleType; } /** * @param doubleType * the doubleType to set */ public void setDoubleType(double doubleType) { this.doubleType = doubleType; } /** * @return the boolType */ public boolean isBoolType() { return boolType; } /** * @param boolType * the boolType to set */ public void setBoolType(boolean boolType) { this.boolType = boolType; } /** * Constructs a <code>GroupEntity</code> <br> */ public MyObject() { } } }