adam bien's blog

Java / JSON-B: String To JsonObject 📎

With Jakarta JSON-P you have to use a JsonReader to indirectly "read" a String into a JsonObject.

Jakarta JSON Binding (JSON-B) directly supports the deserialization from a String into Java objects, also JsonObjects:


import jakarta.json.JsonObject;
import jakarta.json.bind.JsonbBuilder;

public class JsonpWithJsonb {

    @Test
    public void stringToJsonObject(){
        var serialized = """
        {"name":"duke"}
        """;

        var deserialized = JsonbBuilder
                            .create()
                            .fromJson(serialized,JsonObject.class);
        assertNotNull(deserialized);
        System.out.println(deserialized);
    }
    
}    

The test above is successful and prints: {"name":"duke"}

In a Java SE environment you need a single dependency (JSON-B RI) in your pom.xml:


<dependency>
    <groupId>org.eclipse</groupId>
    <artifactId>yasson</artifactId>
    <version>2.0.4</version>
</dependency>

Most Jakarta EE / MicroProfile runtimes are already shipping with JSON-B support.