需要以下JSON:
{[{"value":"1"}, {"value":"2"}, {"value":"3"}, {"value":"4"value}]}
使用:
JsonGenerator generator = factory.createGenerator(os, JsonEncoding.UTF8);) {
generator.writeStartObject();
generator.writeFieldName("data");
generator.writeStartArray();
while (rs.next()) {
generator.writeStartObject();
generator.writeStringField("value", rs.getString("value"));
generator.writeEndObject();
}
generator.writeEndArray();
generator.writeEndObject();
generator.close();
输出:
{"data":[{"value":"1"}, {"value":"2"}, {"value":"3"}, {"value":"4"value}]}
我不想要 data 标签,但如果
generator.writeFieldName("data");
已删除,抛出以下错误:
com.fasterxml.jackson.core.JsonGenerationException: Can not start an array, expecting field name (context: Object)
这样做的正确方法是什么?
谢谢
似乎您可能只想省略root对象声明并将其作为数组,因为它不是有效的JSON格式。
JsonGenerator generator = factory.createGenerator(os, JsonEncoding.UTF8);
generator.writeStartArray();
while (rs.next()) {
generator.writeStartObject();
generator.writeStringField("value", rs.getString("value"));
generator.writeEndObject();
}
generator.writeEndArray();
generator.close();
这将返回有效的json
格式为:
[{"value":"1"}, {"value":"2"}, {"value":"3"}, {"value":"4"}]
@krzysztof-krzeszewski的答案更好,并给出所需的结果。
首先,您的JSON示例在所有引号之外包含一个"值",但我猜这是错别字。问题是:
{[{"value":"1"}, {"value":"2"}, {"value":"3"}, {"value":"4"}]}
根本没有有效的JSON。您必须在数组中添加一个属性名称,因为直到它具有一个名称,它是无效的。这是您作为有效的JSON包含的示例。
{"data":[{"value":"1"}, {"value":"2"}, {"value":"3"}, {"value":"4"}]}