json java流逗号分隔
我有一连串的弦。每个字符串表示json对象,如下所示,例如:
// {"foo": "bar", "bar": "foo"}
String s1 = "{\"foo\": \"bar\", \"bar\": \"foo\"}";
我从数据库中获取大量数据,这就是我使用Stream的原因。 我想将这些数据流式传输到http响应的输出
try (Stream<String> data = service.streamData()) {
os.write("[".getBytes());
eventStream.forEach(s -> {
try {
os.write(s.getBytes());
os.write(",".getBytes());
os.write("\n".getBytes());
} catch (IOException e) {
logger.error(e.getMessage());
}
});
}
os.write("{}]".getBytes());
os.flush();
因为每个字符串代表一个json对象,所以我想返回这些对象的数组。在这种情况下,我必须手动添加"["
和"]"
,并使用逗号分隔流中的每个元素。但最终我会在最新的元素后面加一个逗号。这将不是一个有效的json
看起来是这样的:
["{"foo": "bar", "bar": "foo"}", "{"foo": "bar1", "bar": "foo1"}",]
你知道如何使用流删除最新的逗号吗
# 1 楼答案
注意,虽然lambda表达式是一个整洁的特性,但匿名内部类并没有停止存在。如果您需要一个有状态的消费者,它们是正确的工具。这里甚至不需要条件:
如果您必须处理空流,您可以将其扩展到