1

In Apache Johnzon, is there a way to hava a generic field that contains dynamic JSON data, not mappable to a pre-defined POJO? In Jackson you can simply use ObjectNode as a generic container, have some JSON processing on it, and then write the whole object in JSON format.

In Jackson it works as expected using ObjectNode, here is my code:

public class JsonTest {
  private String myStaticKey = "foo";
  private ObjectNode jsonData;

  //code to initialize ObjectNode + getters + setters

  @JsonIgnore
  public void addValue(String key, String value) {
    jsonData.put(key, value);
  }

  @JsonIgnore
  public String toJson() {
    return new ObjectMapper().writeValueAsString(this);
  }
}

public class MainTest {
  public static void main(String[] args) {
    JsonTest t = new JsonTest();
    t.addValue("myDynamicKey", "bar");
    System.out.println(t.toJson());
  }
}

Expected result:

{
  "myStaticKey": "foo",
  "jsonData": {
    "myDynamicKey": "bar"
  }
}

0 Answers0