package com.alibaba.json.bvt.bug; import java.util.Collection; import java.util.HashSet; import org.junit.Assert; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; import junit.framework.TestCase; public class Bug_for_issue_383 extends TestCase { public void test_for_issue() throws Exception { TestClass ts = new TestClass(); ts.getHashSet().add(1); ts.getHashSet().add(4); ts.getMember().getHashSet().add(10); ts.getMember().getHashSet().add(15); String jsonStr = JSON.toJSONString(ts, new SerializerFeature[]{ SerializerFeature.WriteClassName, SerializerFeature.DisableCircularReferenceDetect }); System.out.println(jsonStr); ts = JSON.parseObject(jsonStr, TestClass.class); Assert.assertEquals(HashSet.class, ts.getHashSet().getClass()); for (Integer val : ts.getHashSet()) { System.out.println(val); } } public static class TestClass { private Collection<Integer> hashSet = new HashSet<Integer>(); private Member member = new Member(); public TestClass() { } public Collection<Integer> getHashSet() { return hashSet; } public void setHashSet(Collection<Integer> hashSet) { this.hashSet = hashSet; } public Member getMember() { return member; } public void setMember(Member member) { this.member = member; } } public static class Member{ private Collection<Integer> hashSet = new HashSet<Integer>(); public Member() { } public Collection<Integer> getHashSet() { return hashSet; } public void setHashSet(Collection<Integer> hashSet) { this.hashSet = hashSet; } } }