Bonjour,

J'ai une hashmap<Utilisateur,Boolean> que je parse en json avec la librairie Jackson mais quand je la parse j'obtient ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
{"utilisateur -> mail :mon.mail@gmail.com ; nom : lenom; prenom : leprenom; pseudo : maxou ; avatar : IMAGE ; sexe : 0 ; naissance : 1992-04-15":true}
Est-ce normal ? parce que du coup je n'arrive pas à récupérer l'email de l'utilisateur en faisant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
for(var key in liste){		
var value = liste[key];
alert(key.mail +" = " +value);
}
Voici ma servlet qui envoie le json au client:


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
public void service( HttpServletRequest req, HttpServletResponse res )
			throws ServletException, IOException
	{
		res.setCharacterEncoding("UTF-8");
		res.setContentType("application/json");
		PrintWriter out = res.getWriter();
		UtilisateurManager mu = new UtilisateurManager();
		ObjectMapper mapper = new ObjectMapper();
		String repJson = mapper.writeValueAsString(mu.getContactsByUser(req.getParameter("search"),"mail@gmail.com"));
		out.print(repJson);
	}
et le manager qui construit la hashmap :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public HashMap<Utilisateur,Boolean> getContactsByUser(String pseudo, String currentUser){
    try (Connection con = Connexion.getConnection()){
      HashMap<Utilisateur,Boolean> contacts = new HashMap<Utilisateur,Boolean>();
      String requete = "SELECT * FROM utilisateur WHERE pseudo_user LIKE ?";
      PreparedStatement stmt1 = con.prepareStatement(requete);
      stmt1.setString(1, pseudo+"%");
      ResultSet rs = stmt1.executeQuery();
      Utilisateur contact;
      String requete2 = "SELECT * FROM contact WHERE user1=? AND user2=? OR user1=? AND user2=?";
      ResultSet rs2;
      PreparedStatement stmt2;
      while(rs.next()){
        contact = new Utilisateur(rs.getString("mail_user"),rs.getString("pseudo_user"),rs.getString("nom_user"),rs.getString("prenom_user"),rs.getString("img_user"),rs.getInt("sexe_user"),rs.getDate("naiss_user"));
        stmt2 = con.prepareStatement(requete2);
        stmt2.setString(1, currentUser);
        stmt2.setString(2, rs.getString("mail_user"));
        stmt2.setString(3, rs.getString("mail_user"));
        stmt2.setString(4, currentUser);
        rs2 = stmt2.executeQuery();
        if(rs2.next()){
          contacts.put(contact,true);
        }else{
          contacts.put(contact,false);
        }
      }
      return contacts;
    } catch (SQLException | NamingException e) {
      e.printStackTrace();
    }
    return null;
}
Merci,

Cordialement.