user9353766
user9353766

Reputation: 75

Set a List of String for JSON generator

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

Answers (1)

lahiruk
lahiruk

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

Related Questions