1
JSONのシリアル化にJacksonを使用しています。私はJavaのリスト(文字列値を含む)をJSON配列に変換しようとしています。私はジャーナル経由でJSON ArrayにJavaリストを書き込む
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();
例外
Iから例外を取得Can not write a string, expecting field name (context: Object)
「ジェネレータをJsonGeneratorのWriteStringメソッドを使用して、次のアプローチ(問題のそれぞれについて、以下のとおり)
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"]
}
だから、あなたはあなたのリストを含む、単一のキーという名前の引数を持つJSONオブジェクトをしたいですか?そうですか?あなたのリストを含むargsという名前の単一のフィールドを持つクラスを作成し、そのクラスのインスタンスを直列化するのはなぜですか? –
はそれを試みます - 私は発電機を通して同じことを達成できることを望んでいました。 –
ジェネレータを介して有効なすべてのjsonを達成できます。シリアライザ(素晴らしい提案です)を試してみたら、少なくともこの質問を終わらせてください。そうしないと、「シリアライザを使用しないでください。」の質問/回答がもう1つもありません。 – weston