fastjson 多层嵌套的问题

来源:互联网 发布:东南大学翻译硕士 知乎 编辑:程序博客网 时间:2024/05/17 23:22

今天使用fastjson的JSON.parseObject(String text,Class<?> clazz)解析3层嵌套的json串时候遇到了奇怪问题,

照着往常的代码写了javabean实体类,如下:

public class AccumulateVo implements Serializable{private static final long serialVersionUID = 2103150417537153021L;public String status;public PlayerData data = new PlayerData();public class PlayerData implements Serializable{private static final long serialVersionUID = 8918875127028668209L;public List<Player> gpplayers;public List<Player> players;}public class Player implements Serializable{private static final long serialVersionUID = -1671946651969264115L;public String sumpoint;public String pl_name;public String rank;}}
但是解析的时候报错如下:

Caused by: java.lang.IllegalArgumentException: argument 1 should have type cn.situne.wifigolfscorer.json.AccumulateVo, got cn.situne.wifigolfscorer.json.AccumulateVo$

PlayerData
转换PlayerData的第一个参数需要类型?这什么鬼?

感觉代码的没问题啊,最后经过一番查阅,有一篇文章提到了多层嵌套的时候需要使用static,但是没有具体的例子,也没说清楚给谁加static。

最后经过试验,需要给第三层的泛型类加static,再次解析,成功大笑

代码如下:

public class AccumulateVo implements Serializable{private static final long serialVersionUID = 2103150417537153021L;public String status;public PlayerData data = new PlayerData();public class PlayerData implements Serializable{private static final long serialVersionUID = 8918875127028668209L;public List<Player> gpplayers;public List<Player> players;}public static class Player implements Serializable{private static final long serialVersionUID = -1671946651969264115L;public String sumpoint;public String pl_name;public String rank;}}
只需要给Player类添加static修饰符即可。



0 0