Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Hacking With the JSONB 1.0 Public Review [Snippet]

DZone's Guide to

Hacking With the JSONB 1.0 Public Review [Snippet]

This article gives a quick example of JSR 367, the JSONB spec.

· Integration Zone ·
Free Resource

SnapLogic is the leading self-service enterprise-grade integration platform. Download the 2018 GartnerMagic Quadrant for Enterprise iPaaS or play around on the platform, risk free, for 30 days.

The Public Review of JSR 367 (JSONB 1.0) has just recently been announced. The snapshot version can already be tested.

For an example see the JSONB module of my JAX-RS Hypermedia project.

As JSONB — provided by the reference implementation — can’t obviously be integrated in JAX-RS yet, we need some boilerplate code in the JAX-RS resource methods.

See the CartResource class as an example:

@Path("shopping_cart")
public class CartResource {

    ...

    // JAX-RS 2.0 obviously isn't integrated with JSONB yet
    private Jsonb jsonb;

    // as deserialization is done manually, validation also isn't integrated by JAX-RS
    @Inject
    Validator validator;

    @PostConstruct
    public void initJsonb() {
        jsonb = JsonbBuilder.create();
    }

    @GET
    public StreamingOutput getShoppingCart() {
        final ShoppingCart cart = shoppingCart.getShoppingCart();
        ...

        return output -> jsonb.toJson(cart, output);
    }

    @POST
    public void addItem(InputStream input) {
        final CartInsertion insertion = jsonb.fromJson(input, CartInsertion.class);

        final Set<ConstraintViolation<CartUpdate>> violations = validator.validate(insertion);
        if (!violations.isEmpty())
            throwBadRequest(violations);

        ...
    }
}

This shows us one of the most important benefits of using Java EE: being able to seamlessly integrate various specifications — without these extra efforts of course — as soon as the new specs are final and incorporated.

With SnapLogic’s integration platform you can save millions of dollars, increase integrator productivity by 5X, and reduce integration time to value by 90%. Sign up for our risk-free 30-day trial!

Topics:
jsonb ,jsr 367 ,jax-rs

Published at DZone with permission of

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}