Reputation: 75
I want to set a List of Strings for the JSON object through JSON Generator.
I tried the following code but it did not work and gives an error.
List<String> urls = new ArrayList<>();
urls.add("url1");
urls.add("url2");
JsonFactory factory = new JsonFactory();
StringWriter writer = new StringWriter();
JsonGenerator generator = factory.createGenerator(writer);
generator.writeStartObject();
generator.writeStringField("firstname", "myname");
generator.writeObjectField("urls", urls);
generator.writeEndObject();
generator.close();
writer.close();
String jsonData = writer.toString();
Following error occurred
java.lang.IllegalStateException: No ObjectCodec defined for the generator, can only serialize simple wrapper types (type passed java.util.ArrayList) at com.fasterxml.jackson.core.JsonGenerator._writeSimpleObject(JsonGenerator.java:1725) at com.fasterxml.jackson.core.base.GeneratorBase.writeObject(GeneratorBase.java:327) at com.fasterxml.jackson.core.JsonGenerator.writeObjectField(JsonGenerator.java:1415)
Upvotes: 1
Views: 1264
Reputation: 453
You need to set ObjectCodec in your JsonGenerator.
generator.setCodec(new ObjectMapper());
You can use an ObjectMapper object as ObjectCodec since it is extended from ObjectCodec
Upvotes: 1