I am trying to create a very simple REST service using Jersey. Here is the service code
@Path(\"/UserService\")
publ
To use Jackson 2.x as your JSON provider you need to add jersey-media-json-jackson module to your pom.xml
file:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.22.2</version>
</dependency>
And then register the JacksonFeature in your Application/ResourceConfig subclass.
For more details, have a look at Jersey documentation.
I am a bit upset about JAXB binding as well at the moment, therefore let me summarize my findings here - please correct me if I say something stupid:
I hope this helps others.
I tried a ton of these dependencies but none of them worked for my version of Jersey3. What I needed to do was turn the Arraylist into an actual array. I managed this with toArray()
and it started serializing correctly!
Your xml was working so I assume that you have @XmlRootElement
annotation in your User
class.
The thing is, it knows how to convert it to xml with the annotation @XmlRootElement
but it doesn't know how to convert it to JSON.
So for making it convert everything to JSON with the same annotation of xml(ie @XmlRootElement
) we can add
jersey-media-moxy-<whatever version>.jar
or for maven users
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
Also it should have a no argument constructor
You need a json serializer on your class path to make this work.
Just add jackson and jersey will use this in the writer. E.g. if you are using maven, add this to the pom.xml
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.7.4</version>
</dependency>