美文网首页
对于json转换实体类时候所抛出的类型转换异常

对于json转换实体类时候所抛出的类型转换异常

作者: 请叫我犀牛先生 | 来源:发表于2017-11-23 19:28 被阅读0次

近日,在项目中被一个问题所困扰。就是在json转换成实体类的时候时不时的会抛出一个类型转换异常。

异常详细信息为:

net.sf.ezmorph.bean.MorphDynaBean cannot be cast to (实体类的全路径)

经网上查阅了一些资料后发现,如果实体类中涉及到复杂的数据类型的时候,这个异常就会暴露出来。
实体类中所涉及到的数据类型有两种:
分别有Stirng 和 list集合 集合的泛型则是另外一个实体类。废话不多说直接上代码:

//实体类一
 public class GoodsInfo {
    private String name;
    private List<Price> priceList;
    //gei,set方法省略
 }
//实体类二
public class Price {
    private Integer price;
    private String name;
    //get,set方法省略
}

测试过程:
在一个main方法中去两个类里面进行初始化:

public static void main(String[] args) {
        GoodsInfo info = new GoodsInfo();
        Price price = new Price();
        Price price1 = new Price();
        List<Price> list = new ArrayList<>();
        price .setPrice(30);
        price.setName("CCTV5");
        
        price1 .setPrice(30);
        price1.setName("CCTV5");

        list.add(price);
        list.add(price1);
        info.setId("1434141");
        info.setName("choufei");
        info.setPriceList(list);    
        
        JSONObject json = JSONObject.fromObject(info);
        System.out.println(json);
        GoodsInfo info1 = new GoodsInfo();
        info1 = (GoodsInfo) JSONObject.toBean(json, GoodsInfo.class);
        Price pc = info1.getPriceList().get(0);
        System.out.println(pc.getPrice());
    }

当运行此main方法的时候就会抛出以下异常:

Exception in thread "main" java.lang.ClassCastException: net.sf.ezmorph.bean.MorphDynaBean cannot be cast to com.lty.pilipala.entity.Price
at com.lty.pilipala.test.Test.main(Test.java:42)

解决方法:

//在main中从json转换对象的时候用map集合进行约束
JSONObject json = JSONObject.fromObject(info);
        System.out.println(json);
        GoodsInfo info1 = new GoodsInfo();
        Map<String, Object> map = new HashMap<>();
        map.put("priceList", Price.class);//注意,priceList就是实体类里面的参数名称。
        info1 = (GoodsInfo) JSONObject.toBean(json, GoodsInfo.class, map);
        System.out.println(info1.getPriceList().get(0).getPrice());

输出结果:

30

2017-11-23 上海 晴

相关文章

  • 对于json转换实体类时候所抛出的类型转换异常

    近日,在项目中被一个问题所困扰。就是在json转换成实体类的时候时不时的会抛出一个类型转换异常。 异常详细信息为:...

  • jackson

    jackson 将String的json文件转换为对象 实体类 jackson String类型转换为对象类型,需...

  • 转换操作符

    Cast:将非泛型的 IEnumerable 集合元素转换为指定的泛型类型,若类型转换失败则抛出异常。 ToArr...

  • JSON转换泛型对象 泛型字段转换异常问题ClassCastEx

    alibaba.fastjson : JSON对象转换Bean对象,对象内泛型字段类型转换异常问题。 错误示例: ...

  • 异常处理的最佳实践

    针对异常的一般操作转换,即转换新的异常抛出。对于新抛出的异常,最好具有特定的分类和明确的异常消息,而不是随便抛一个...

  • Kotlin介绍系列(二)基本语法(3)

    as强制类型转换 首先声明强制类型转换是非安全的,可能抛出异常。e.g.: 注意如果y可以为null,而null是...

  • Js Util工具集

    JSON 数据还原 防止后台JSON转换异常 POST提交 时间转换JS 具体时间转换 精确到秒 具体时间 精确到...

  • Linux基本命令

    每日英文:常见异常 ClassCastException 数据类型转换异常,没有强制类型转换时会出...

  • 使用fastjson对JSON、实体类、列表转换

    layout: posttitle: 使用fastjson对JSON、实体类、列表转换subti...

  • C#优化

    as效率比强制转型高 强制转型有可能会抛出异常,而且实际上调用的是操作转换符函数; 当将基类型转换为子类型时使用a...

网友评论

      本文标题:对于json转换实体类时候所抛出的类型转换异常

      本文链接:https://www.haomeiwen.com/subject/jwctbxtx.html