[英]How to create a map of maps from a list of maps with Java 8 streaming api
[英]How to write list of maps using Jackson Streaming API
通过一些阅读,我看到了 Jackson 流式传输 API 的以下示例。 他们正在为一张 object(一种地图)写作。 任何人都可以帮助我如何编写多个对象。 就像地图列表一样。
jsonFactory jfactory = new JsonFactory();
/*** write to file ***/
JsonGenerator jGenerator = jfactory.createJsonGenerator(new File(
"c:\\user.json"), JsonEncoding.UTF8);
jGenerator.writeStartObject(); // {
jGenerator.writeStringField("name", "mkyong"); // "name" : "mkyong"
jGenerator.writeNumberField("age", 29); // "age" : 29
jGenerator.writeFieldName("messages"); // "messages" :
jGenerator.writeStartArray(); // [
jGenerator.writeString("msg 1"); // "msg 1"
jGenerator.writeString("msg 2"); // "msg 2"
jGenerator.writeString("msg 3"); // "msg 3"
jGenerator.writeEndArray(); // ]
jGenerator.writeEndObject(); // }
jGenerator.close();
我尝试循环并得到以下结果。
{“Item1label1”:”Item1value1”,”Item1label2”:”Item1value2"} {“Item2label1”:”Item2value1”,”Item2label2”:”Item2value2"}
但这不是有效的 JSON。 由于两个对象之间缺少某些东西。 必须制作什么代码才能使其有效 JSON。
下面是使用writePOJOField
方法编写大量对象的示例(此处为HashMap
,但可以是其他任何对象)。 我使用jackson-core和jackson-databind (请参阅https://github.com/FasterXML/jackson )。
// given
ByteArrayOutputStream stream = new ByteArrayOutputStream();
JsonFactory jfactory = new JsonFactory(new ObjectMapper());
JsonGenerator jGenerator = jfactory.createGenerator(stream, JsonEncoding.UTF8);
// when
jGenerator.writeStartObject();
jGenerator.writeStringField("name", "Tom");
jGenerator.writeNumberField("age", 25);
jGenerator.writeFieldName("objects");
jGenerator.writeStartArray();
IntStream.range(0, 3).forEach(it -> {
try {
jGenerator.writePOJO(new HashMap<String, String>() {{
put("key1", "value1");
put("key2", "value2");
}});
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
});
jGenerator.writeEndArray();
jGenerator.writeFieldName("strings");
jGenerator.writeStartArray();
jGenerator.writeString("textX");
jGenerator.writeString("textY");
IntStream.range(0, 3).forEach(it -> {
try {
jGenerator.writeString("text-" + it);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
});
jGenerator.writeEndArray();
jGenerator.writeNullField("nullField");
jGenerator.writeEndObject();
jGenerator.close();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.