/ / Włączenie JSON za pomocą jerseyu i grizzly - java, json, jersey, jersey-2.0, grizzly

Włączanie JSON za pomocą jersey i grizzly - java, json, jersey, jersey-2.0, grizzly

Gram z Jersey gospodarzem Grizzly ichcę być w stanie konsumować i produkować JSON, jednak otrzymuję 500 z serwera w żądaniu pobierania i typie mediów nieobsługiwanym w POST mój kod serwera to

org.glassfish.jersey.server.ResourceConfig rc = new ResourceConfig();
rc.packages("RestServer.controllers");

final Map<String, Object> initParams = new HashMap<String, Object>();
initParams.put("com.sun.jersey.config.property.packages", "rest");
initParams.put("com.sun.jersey.api.json.POJOMappingFeature", "true");

rc.addProperties(initParams);

webServer = GrizzlyHttpServerFactory.createHttpServer(uri, rc, false);

moje POJO to:

@XmlRootElement
public class Dummy {

private int id;
private String name;

public Dummy(int id, String name) {
this.id = id;
this.name = name;
}

@XmlElement(name="id")
public int getId() {
return id;
}

@XmlElement(name = "name")
public String getName() {
return name;
}
}

i kontroler

@Path("/Dummies")
public class DummyController {

@GET
@Produces(MediaType.APPLICATION_JSON)
public Response get() {
System.out.println("Get");
return Response.status(Status.OK)
.entity(new Dummy(-1, "hello"))
.build();
}

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response AddDummy(Dummy dummy) {
return Response.status(Status.CREATED).entity(dummy).build();
}
}

Odpowiedzi:

13 dla odpowiedzi nr 1

Używasz Jersey 2. W Jersey 2, tam jest Nie com.sun.jersey.api.json.POJOMappingFeature i com.sun.jersey.config.property.packages, więc możesz się ich pozbyć.

Aby włączyć JSON do / z POJO, potrzebujemy MessageBodyWriter/MessageBodyReader(Zobacz więcej tutaj). Na szczęście nie musimy ich sami pisać, wystarczy mieć zależność (zob tutaj).

<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>${jersey2.version}</version>
</dependency>

Ta depedancja przyciągnie wymaganego Jacksona MessageBodyReader/MessageBodyWriter. Następnie skonfiguruj go

resourceConfig.register(JacksonFeature.class);