如何使用Jackson创建无名Json数组

如何使用Jackson创建无名Json数组,json,jackson,Json,Jackson,需要以下JSON: {[{"value":"1"}, {"value":"2"}, {"value":"3"}, {"value":"4"value}]} 使用: JsonGenerator generator = factory.createGenerator(os, JsonEncoding.UTF8);) { generator.writeStartObject(); generator.writeFieldName("data"); generator.

需要以下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}]}
我不想要数据标签,但如果

generator.writeFieldName("data");
如果删除,将引发以下错误:

com.fasterxml.jackson.core.JsonGenerationException: Can not start an array, expecting field name (context: Object)
正确的方法是什么


谢谢

来自@krzysztof krzeszewski的答案更好,并且给出了期望的结果

首先,您的json示例在任何引号外都包含一个“值”,但我猜这是一个输入错误。 问题在于:

{[{"value":"1"}, {"value":"2"}, {"value":"3"}, {"value":"4"}]}
根本不是有效的json。 必须向数组中添加属性名称,因为在该属性名称出现之前,它是无效的。 下面是一个示例,您将其作为有效的json包含,并修复了输入错误

{"data":[{"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"}]}

您可能只想省略根对象声明,将其保留为数组,因为它不是有效的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"}]

您可能只想省略根对象声明,将其保留为数组,因为它不是有效的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"}]