[英]write Java List to JSON Array via Jackson
我正在使用Jackson进行JSON序列化。 我试图将Java List(包含字符串值)转换为JSON数组。 我尝试了以下方法(下面给出了每个问题)
1.使用JsonGenerator的writeString编写数组元素
final JsonGenerator generator = factory.createGenerator(output, JsonEncoding.UTF8);
generator.writeStartArray();
for (String arg: argsList) {
generator.writeStartObject();
log.info("arg value is {}", arg);
generator.writeString(arg);
generator.writeEndObject();
}
generator.writeEndArray();
例外
Can not write a string, expecting field name (context: Object)
我从“generator.writeString(arg)”中得到了异常。 我不能使用writeStringField。
对象映射器
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(out, argsList);
final byte[] argsBytes = out.toByteArray();
generator.writeFieldName("args");
generator.writeObjectField("args", argsBytes)
这会将数组创建为String而不是JSON对象中的数组(这是我想要实现的)。 欢迎大家提出意见。
结束状态(试图实现):
{
"args":["abc","def","ghi","jkl","mno"]
}
通过在每个数组条目周围开始/结束一个对象,你正在尝试制作无效的json:
{
"args":[{"abc"},{"def"},{"ghi"},{"jkl"},{"mno"}]
}
而发电机正在阻止你做这件事。
只需将字符串直接写入数组:
final JsonGenerator generator = factory.createGenerator(output, JsonEncoding.UTF8);
generator.writeStartArray();
for (String arg: argsList) {
generator.writeString(arg);
}
generator.writeEndArray();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.