【问题标题】:Java Play FrameWork 2.3 return streamed Json using jacksonJava Play FrameWork 2.3使用jackson返回流式Json
【发布时间】:2015-04-22 15:22:41
【问题描述】:

有没有办法在我的 API 响应中流式传输 Json?

我了解如何使用此示例中的 jackson 库读取和写入 json 文件:

http://www.mkyong.com/java/jackson-streaming-api-to-read-and-write-json/

但是现在在 play 框架中,如何流式传输我的响应,或者换句话说,如何在我的 API 中返回 return ok(); 中的内容?

【问题讨论】:

  • 它是你想要流式传输的带有 json 字符串的文件,还是只是一个 json?你用 POJO 来表示 json 数据吗?
  • 它只是一个 json ,但如果我没记错的话,你应该把 json 当作一个文件来流式传输它......是的,我使用 pojos
  • 你使用什么PlayFramework 版本?

标签: java json playframework stream jackson


【解决方案1】:

你试过Play's chunked responses吗?

在你的控制器中,你会在这一行有一个动作:

public Result chunkedJson() {
    return ok(readJsonChunks());
}

readJsonChunks 方法中,您实际上创建了块:

public static Chunks<String> readJsonChunks() {
    Chunks<String> chunks = new StringChunks() {

        @Override
        public void onReady(play.mvc.Results.Chunks.Out<String> out) {
            JsonFactory jfactory = new JsonFactory();
            try {
                // Read from file
                JsonParser jParser = jfactory.createJsonParser(new File("c:\\user.json"));

                // Loop until token equal to "}"
                while (jParser.nextToken() != JsonToken.END_OBJECT) {
                    // Write all your JSON stuff into out, e.g. with
                    String text = jParser.getText();
                    out.write(text);
                }

                jParser.close();
            } catch (IOException e) {
                out.write("Couldn't open file c:\\user.json");
            } finally {
                out.close();
            }
        }
    };
    return chunks;
}

我从未尝试过这个特定的代码(尤其是我从未使用过 JsonFactory.createJsonParser - 它似乎已被弃用)但我使用类似的东西将日志文件从服务器发送到客户端。

(我正在使用 Play 2.2.3)

【讨论】:

  • 我很快就会去看看
猜你喜欢
  • 1970-01-01
  • 2015-01-10
  • 2016-11-07
  • 2015-12-09
  • 1970-01-01
  • 2015-05-13
  • 2015-12-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多