Damien Cooke Damien Cooke - 2 months ago 10
JSON Question

Issues Converting String to javax.json.JsonString

I have a class that looks something like this

private byte[] profilePicture;
private ProfileType profileType;
private String profileHandle;
private String personalEmail;
private Address address;


To convert this to Json using javax.json is like this:

JsonObject payloadObject = Json.createObjectBuilder()
.add("profilePicture", profilePictureEncoded)
.add("profileType", profileType.ordinal())
.add("profileHandle", profileHandle)
.add("personalEmail", personalEmail)
.add("webAppEmail", webappEmail)
.add("address", address.produceJsonPayload())
.build();


All good!! except sometimes there is no profile picture so I wanted to build this incrementally ie

JsonObject payloadObject = Json.createObjectBuilder().build();
if(profilePicture != null)
{
final String profilePictureEncoded = ..... //encode the image
payloadObject.put("profilePicture",profilePictureEncoded);
}


problem is you cant because I can't cast profilePictureEncoded to a JsonString

Has anyone got something like this working? Or do I need to use another Json Library?

Damien

Answer

You can just get a reference to the JsonObjectBuilder.

JsonObjectBuilder payloadObjectBuilder = Json.createObjectBuilder();

wait until you have everything while constructing

if(profilePicture != null)
{
    final String profilePictureEncoded = ..... //encode the image
    payloadObject.add("profilePicture",profilePictureEncoded);
}

and then build()

JsonObject payloadObject = payloadObjectBuilder.build();