Damien Cooke
Damien Cooke

Reputation: 725

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

Upvotes: 1

Views: 1894

Answers (1)

Sotirios Delimanolis
Sotirios Delimanolis

Reputation: 280172

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();

Upvotes: 2

Related Questions