如何与杰克逊创建一个无名的JSON阵列



需要以下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"}]}

最新更新