1
我使用Jackson進行JSON序列化。我試圖將Java列表(包含字符串值)轉換爲JSON數組。我試着用JsonGenerator的writeString通過Jackson將Java List寫入JSON Array
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)
我從得到的異常「生成器(每個如下問題)以下方法
1.寫入數組元素.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"]
}
所以,你想與一個名爲ARGS一個鍵一個JSON對象,包含你的名單?是對的嗎?爲什麼不創建一個類,其中包含名爲args的單個字段,幷包含您的列表,並序列化該類的一個實例? –
會嘗試 - 我希望我可以通過發生器達到同樣的效果。 –
您可以通過生成器實現每個有效的json。如果你確實嘗試了一個序列化程序(這是一個很好的建議),請至少完成這個問題,這樣我們就不會再有另一個「不要那麼做了,使用序列化程序」問題/答案。 – weston