2016-03-24 14 views
1

Mein Code:HashMap JSON-Antwort in Jersey 2

@Path("/pac") 
    @Consumes(MediaType.APPLICATION_JSON) 
    @Produces(MediaType.APPLICATION_JSON) 
    @Component 
    public class LDAPResource { 
     @Autowired 
     private LDAP_PAC_Service pacService; 

     @GET 
     @Path("/query/{userID}") 
     public Response getPAC(@PathParam("userID") String userID) { 
      return Response.ok().entity(pacService.getPAC(userID)).build(); 
     } 
    } 

pacService.getPAC(userID) gibt ein HashMap<String, String>

Es husten, wenn ich versuche APPLICATION_JSON zurückzukehren, ich

SEVERE: MessageBodyWriter not found for media type=application/json, type=class java.util.HashMap, genericType=class java.util.HashMap. 

Was ist der einfachste Weg, um das zu erreichen? Dank

Antwort

1

Der einfachste Weg, ich bin mir bewusst, Verwenden Sie dazu ObjectMapper und übergeben Sie die Map an die Methode writeValueAsString(). Zum Beispiel:

import com.fasterxml.jackson.databind.ObjectMapper; 

    Map<String, String> mapData = new HashMap<>(); 
    mapData.put("1", "one"); 
    mapData.put("2", "two"); 
    ObjectMapper objectMapper = new ObjectMapper(); 
    objectMapper.writeValueAsString(mapData); 

Die Zeichenkette zurückgegeben "{" 2 ":" two " "1": "one"}".

Jersey enthält intern Entity Provider für String-Typ, so dass dies funktionieren sollte.

Es wäre besser, einen eigenen MessageBodyWriter zu schreiben, um mehr Anwendungsfälle zu berücksichtigen und den Prozess zu rationalisieren. Sie finden die Dokumentation here

Verwandte Themen