2017-07-24 2 views
3

Ich habe bemerkt, dass, wenn ich Response.status(201).entity(id).build verwendet, den folgenden Fehler zurückgibt:Fehler beim Versuch, eine ganze Zahl als Einheit zurück

Severe: MessageBodyWriter nicht für Medien type = application/json, type = Klasse java gefunden. lang.Integer, genericType = Klasse java.lang.Integer.

@POST 
    @Produces({"application/json"}) 
    public Response createUser(
      @NotNull @FormParam("username") String username, 
      @NotNull @FormParam("password") String password, 
      @NotNull @FormParam("role") String role) { 

     int id = 12; 
     return Response.status(201).entity(id).build(); 

    } 

Antwort

1

Einzeln Integer Objekt kann nicht zu JSON konvertiert werden, da JSON es wie Karte (Schlüssel-Wert-Paare) ist. Sie müssen Optionen:

1) Typ ändern

@Produces({"text/plain"}) 

2) Erstellen Sie eine Klasse in Text zurück, die Ihre Einzelwert als JSON repräsentiert, wie:

class IntValue { 
    private Integer value; 

    public IntValue(int value) { 
     this.value = value; 
    } 

    // getter, setter 
} 

und dann

Sie folgende
return Response.status(201).entity(new IntValue(id)).build(); 
0

"1" ist JSON nicht gültig. Sie sollten Ihre Nummer in eine Entität umbrechen oder "application/json" in "application/text" ändern.

Verwandte Themen