1

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

0

1 Answer 1

2

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();
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.