我试图通过返回预先构建的JsonArray来完成get请求,并且还找到了一种流式传输方法。我可以轻松完成请求而不会出现任何错误,如果我将JsonArray转换为字符串,则返回Json,如下所示:
get {
path("getJsonData") {
parameterMap {
params =>
complete(HttpEntity(ContentTypes.`application/json`, myJsonArray.toString))
}
}
}
但是,我想避免转换为字符串,并且能够流式传输JsonArray,因为在某些情况下生成的JsonArray可能非常大。
JsonArray是从头开始从单个JsonObjects创建的,我不使用case类,所以我无法使用我在文档中找到的标准方法。
我是Akka Http的新手,不确定是否有一种简单的方法可以解决这个问题,我会很感激帮助。
答案 0 :(得分:1)
使用下面的内容,您将在单独的HTTP块中流式传输JSON数组的每个元素。
complete(HttpEntity(ContentTypes.`application/json`,
Source(myJsonArray.elements).map(j ⇒ ByteString(j.prettyPrint))))
请注意:
prettyPrint
JSON以满足您的需求。