繁体   English   中英

通过Jackson将Java List写入JSON Array

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM