JAX-RS and JSON-P integration
This short post talks about support for JSON-P in JAX-RS 2.0
JSON-P …?
The JSON Processing API (JSON-P) was introduced in Java EE 7. It provides a standard API to work with JSON data and is quite similar to its XML counterpart – JAXP. JSON-B (JSON Binding) API is in the works for Java EE 8.
Support for JSON-P in JAX-RS 2.0
JAX-RS 2.0 (also a part of Java EE 7) has out-of-the-box support for JSON-P artifacts like JsonObject, JsonArray and JsonStructure i.e. every JAX-RS 2.0 compliant implementation will provide built in Entity Providers for these objects, making it seamless and easy to exchange JSON data in JAX-RS applications
Some examples
Sending JSON array from your JAX-RS resource methods:
@GET public JsonArray buildJsonArray(){ return Json.createArrayBuilder().add("jsonp").add("jaxrs").build(); }
Here is another example of how you can accept a JSON payload from the client
@POST public void acceptJsonObject(JsonObject payload){ System.out.println("theoad -- "+ payload.toString()); }
These are pretty simple examples, but I hope you get the idea….
Few things to be noted
- No need to write custom MessageBodyReader or MessageBodyWriter implementations. As mentioned previously, the JAX-RS implementation does it for you for free !
- This feature is not the same as being able to use JAXB annotations on POJOs and exchange JSON versions of the payload (by specifying the application/xml media type). This is not a standard feature yet, although I have experimented with this and observed that GlassFish 4.1 (Jersey) and Wildfly 8.x (RESTEasy) support this by default
Further reading
- Official JAX-RS specification document – nice and compact !
- Some of my previous posts on Java EE 7 and Java EE 8
- The Aquarium: From the Java EE Evangelism folks at Oracle
Cheers!
Reference: | JAX-RS and JSON-P integration from our JCG partner Abhishek Gupta at the Object Oriented.. blog. |