我想通过JSON生成器为JSON对象设置字符串列表。
我尝试了以下代码,但没有用,并给出了错误。
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();
发生以下错误
java.lang.IllegalStateException:没有为 生成器,只能序列化简单的包装器类型(传递的类型 java.util.ArrayList) com.fasterxml.jackson.core.JsonGenerator._writeSimpleObject(JsonGenerator.java:1725) 在 com.fasterxml.jackson.core.base.GeneratorBase.writeObject(GeneratorBase.java:327) 在 com.fasterxml.jackson.core.JsonGenerator.writeObjectField(JsonGenerator.java:1415)
答案 0 :(得分:0)
您需要在JsonGenerator中设置ObjectCodec。
generator.setCodec(new ObjectMapper());
由于ObjectMapper对象是从ObjectCodec扩展而来的,因此可以将其用作ObjectCodec