记 fastjson泛型转对象 第一次可以正常转,第二次就变成JSONArray 问题

Posted 圆圆的园园

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了记 fastjson泛型转对象 第一次可以正常转,第二次就变成JSONArray 问题相关的知识,希望对你有一定的参考价值。

在解析json数据的时候,在使用泛型对象的时候即:

public class ResultMsgDto<E> implements Serializable {

    private static final long serialVersionUID = 123L;

    private int resultCode;
    private E resultObject;
    private String resultMsg;

   // get set
}

第一次在使用

  ResultMsgDto<List<ArticleDto>> resultMsg = JSON.parseObject(result, new TypeReference<ResultMsgDto<List<ArticleDto>>>() {});

把json字符串转换为 对应泛型对象的时候是可以的,因为我增加一个数据,从服务器中再次获取json字符之后,再次调用上面的方法的时候,这次没有成功,而是JSONArray 类型的数据

之后网上找到了解决方法:

1、https://github.com/alibaba/fastjson/issues/569  这里面有问题 但是已经解决了 这个时候你就要看看你的fastjson的jar包版本,你可以换一个高版本的试试

2、如果换了高版本还是不行的话,那估计你犯了跟我一样的错误

这个时候你就需要查看你的代码中,有没有 没有使用泛型而直接使用ResultMsgDto,例如下面这个错误的列子:

  ResultMsgDto resultMsg = JSON.parseObject(result, new TypeReference<ResultMsgDto>() {});

这个时候就要把这语句中的泛型类型加上去,即使你用不着他对于的对象,但是还需要加上泛型

切记:解决方案:统一使用泛型类型,项目中不允许没有泛型类型的ResultMsgDto,就不会存在这个问题。

 

参考:http://blog.csdn.net/ykdsg/article/details/50432494   感谢这位同学的无私奉献

 

以上是关于记 fastjson泛型转对象 第一次可以正常转,第二次就变成JSONArray 问题的主要内容,如果未能解决你的问题,请参考以下文章

fastjson将Long型转成json精度丢失问题解决

(转)FastJson---高性能JSON开发包

stringsteam使用之整型转字符串

fastjson 调用JSONObject.toJSON(),如果是解析泛型对象会报OutOfMemoryError错误

FastJson将json解析成含有泛型对象,内部泛型对象再次解析出错的解决办法(Android)

解决fastjson反序列化时报错的问题