package helper; import com.alibaba.fastjson.TypeReference; import com.yanzuoguang.util.helper.JsonHelper; import helper.vo.MapSub; import org.junit.Assert; import org.junit.Test; import java.util.ArrayList; import java.util.List; public class TestJsonHelper { @Test public void test() { Fanxing from = new Fanxing<>(new FanxingData("颜佐光")); from.setList(null); from.setListNull(null); String json = JsonHelper.serialize(from); Fanxing to = JsonHelper.deserialize(json, new TypeReference>() { }); Assert.assertNotEquals(from, to); Assert.assertNotEquals(from.getData(), to.getData()); Assert.assertEquals(from.getData().getName(), to.getData().getName()); Assert.assertNotNull(to.getVal()); Assert.assertNotNull(to.getList()); Assert.assertNull(to.getListNull()); } @Test public void test1() { Fanxing> from = new Fanxing<>(new Fanxing<>(new FanxingData("颜佐光"))); from.setList(null); from.setListNull(null); String json = JsonHelper.serialize(from); Fanxing> to = JsonHelper.deserialize(json, new TypeReference>>() { }); Assert.assertNotEquals(from, to); Assert.assertNotEquals(from.getData(), to.getData()); Assert.assertEquals(from.getData().getData().getName(), to.getData().getData().getName()); Assert.assertNotNull(to.getList()); Assert.assertNull(to.getListNull()); } @Test public void testMapRow() { String key = "age"; String name = "颜佐光"; MapSub from = new MapSub(); MapSub from1 = new MapSub(); from.setName(name); from.setName(name); from1.setName(name); from1.setName(name); from.setYear(15); from1.setYear(15); from.put("age", 15); String json = JsonHelper.serialize(from); MapSub to = JsonHelper.deserialize(json, new TypeReference() { }); Assert.assertEquals(from.getName(), to.getName()); Assert.assertEquals(from.getYear(), to.getYear()); Assert.assertEquals(from.get(key), to.get(key)); Assert.assertEquals(from.getName(), name); Assert.assertEquals(from, to); } } class Fanxing { private T data; /** * 用于检测参数可能为null,提醒必须传参数 */ private Integer val = 0; /** * null值反序列化后不会为null,这里不需要提醒传参数为null,一般都是通过数量来控制的 */ private List list = new ArrayList<>(); /** * null值反序列化后后会为null */ private List listNull; /** * 当没有无参构造函数时无法序列化 */ public Fanxing() { } public Fanxing(T data) { this.data = data; } public T getData() { return data; } public Integer getVal() { return val; } public void setVal(Integer val) { this.val = val; } public void setData(T data) { this.data = data; } public List getList() { return list; } public void setList(List list) { this.list = list; } public List getListNull() { return listNull; } public void setListNull(List listNull) { this.listNull = listNull; } } class FanxingData { private String name; /** * 当没有无参构造函数时无法序列化 */ public FanxingData() { } public FanxingData(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }