java.lang.ClassCastException: java.lang.String 无法转换为 java.util.Map

java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map

我正在开发 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;
}

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

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

试试这个:

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