gpt4 book ai didi

java - 通过 Jackson 将 Java 列表写入 JSON 数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:35:48 26 4
gpt4 key购买 nike

我正在使用 Jackson 进行 JSON 序列化。我正在尝试将 Java 列表(包含字符串值)转换为 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)

这会将数组创建为字符串,而不是 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();

关于java - 通过 Jackson 将 Java 列表写入 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42864560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com