[英]write Java List to JSON Array via Jackson
I am using Jackson for JSON serialization. 我正在使用Jackson进行JSON序列化。 I am trying to convert a Java List (containing string values) to a JSON array.
我试图将Java List(包含字符串值)转换为JSON数组。 I tried the following approaches (issues given below for each)
我尝试了以下方法(下面给出了每个问题)
1. write array elements using JsonGenerator's writeString 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();
Exception 例外
Can not write a string, expecting field name (context: Object)
I get the exception from "generator.writeString(arg)". 我从“generator.writeString(arg)”中得到了异常。 I cannot use writeStringField.
我不能使用writeStringField。
object mapper 对象映射器
ObjectMapper mapper = new ObjectMapper();
mapper.writeValue(out, argsList);
final byte[] argsBytes = out.toByteArray();
generator.writeFieldName("args");
generator.writeObjectField("args", argsBytes)
This creates the array as a String and not an array within the JSON object (which is what I am trying to achieve). 这会将数组创建为String而不是JSON对象中的数组(这是我想要实现的)。 Any suggestions would be welcome.
欢迎大家提出意见。
End state (trying to achieve): 结束状态(试图实现):
{
"args":["abc","def","ghi","jkl","mno"]
}
By starting/ending an object around each array entry what you are doing is trying to make invalid json: 通过在每个数组条目周围开始/结束一个对象,你正在尝试制作无效的json:
{
"args":[{"abc"},{"def"},{"ghi"},{"jkl"},{"mno"}]
}
And the generator is rightly stopping you from doing this. 而发电机正在阻止你做这件事。
Just write the strings directly into the array: 只需将字符串直接写入数组:
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.