如何使用Jackson创建无名Json数组
需要以下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.
{[{"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"}]