shiv
shiv

Reputation: 91

Append new value to javax.json.JsonObject

The code that we already have return us JsonObject. What I want to do is to add a new key and the value for it. For example, we have an object like this:

{"id":"12","name":"test"}

I want to transform it into this:

{"id":"12","name":"test","status":"complete"}

I didn't find what I need in documentation except using put method. So I wrote this code:

JsonObject object = getJsonObject();
JsonString val = new JsonString() {

    public JsonValue.ValueType getValueType() {
        return JsonValue.ValueType.STRING;
    }

    public String getString() {
        return "complete";
    }

    public CharSequence getChars() {
        return (CharSequence) "complete";
    }
};
object.put("status", val);

But it doesn't work, crashing with :

java.lang.UnsupportedOperationException

I can't understand what is wrong. Have I any other option to complete such a task?

Upvotes: 1

Views: 3227

Answers (2)

Dharmvir Tiwari
Dharmvir Tiwari

Reputation: 916

Not sure if object.put works but you can use the following way to append the details to JSON value: You can create a different JSON object with the key and value that you want to add to the JSON object and the user object.merge(status, complete, String::concat); merge() checks for the key:'status' in your JSON object if it does'nt find it then it adds that key:value pair or else it replaces it .You are not able to compile it because you may not be using jre 1.8.

I've Just verified the following method: Just create a new JSONObject(org.json.JSONObject not javax.json.JsonObject)

JSONObject modifiedJsonObject= new JSONObject(object.toString());
modifiedJsonObject.put("status", "complete");

Upvotes: 0

Danail Alexiev
Danail Alexiev

Reputation: 7772

I don't think JsonObject instances are meant to be modified.

I think your best option is to create a new object, copy the existing properties and add the new property to it.

You can use https://docs.oracle.com/javaee/7/api/javax/json/JsonObjectBuilder.html

Upvotes: 1

Related Questions