【问题标题】:java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Mapjava.lang.ClassCastException:java.lang.String 无法转换为 java.util.Map
【发布时间】:2021-08-04 10:58:21
【问题描述】:

我正在处理 CodeName One,但在从数据库中检索数据时出现此错误。

问题出在日期类型的元素上 json响应运行良好,其他属性显示成功。

这是我的代码,我希望有人可以帮助我。提前谢谢你。

private Concour parseConcours(Map<String, Object> map) {
  Concour c = new Concour();

  c.setId(((Double) map.get("id")).intValue());
  c.setSujet(map.get("sujet").toString());
  c.setNom(map.get("nom").toString());
  c.setImageName(map.get("imageName").toString());
  c.setDescription(map.get("description").toString());
  c.setCategorie(map.get("categorie").toString());
  c.setCouleur(map.get("couleur").toString());
  c.setDateDebut(new Date((((Double) ((Map<String, Object>) map.get("dateDebut")).get("timestamp")).longValue() * 1000)));
  c.setDateFin(new Date((((Double) ((Map<String, Object>) map.get("dateFin")).get("timestamp")).longValue() * 1000)));

  return c;
}

【问题讨论】:

    标签: java json exception mobile codenameone


    【解决方案1】:

    试试这个:

    try {
       Date date1 = new SimpleDateFormat("yyyy-MM-dd").parse(sDate1); 
       c.setDateDebut(date1); 
        } 
    catch (ParseException ex) { 
         System.out.println(ex.getMessage()); 
        }
    

    【讨论】:

      【解决方案2】:

      你可以做的是将你从 map 中获得的日期字符串转换为 simpledateformat,然后在 setter 方法中分配它,如下所示。

      c.setDateDebut(new SimpleDateFormat("dd/MM/yyyy").parse(map.get("dateDebut")));
      c.setDateFin(new SimpleDateFormat("dd/MM/yyyy").parse(map.get("dateFin")));
      

      【讨论】:

      • 感谢您的回复,但仍然无法正常工作
      • 什么不起作用?反应似乎是正确的。你有不同的例外吗?
      猜你喜欢
      • 1970-01-01
      • 2013-07-25
      • 2016-09-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多