【问题标题】:How to generate a stream of JSON from a stream of objects with Jackson如何使用 Jackson 从对象流中生成 JSON 流
【发布时间】:2021-10-19 06:59:32
【问题描述】:

我有一个Stream 的对象和一个传出的HttpServletResponse

public class Person {
    public String name;
    public Int age;
    ...
}

@RequestMapping(value = "/my/path", produces = MediaType.APPLICATION_JSON_VALUE)
    public void getPersons(HttpServletRequest request, HttpServletResponse response) {
        Stream<Person> stream = getMyStream();

        // write stream of JSON array to response: [{name: "xx", age: 00}, {...}]
    }

如何使用 Jackson 生成 JSON 并将其流式传输到响应而不用所有数据填充内存?

【问题讨论】:

    标签: java json jackson java-stream


    【解决方案1】:

    Jackson 带有一个通用的StreamSerializer。 当您添加 Jdk8Module 时,您会得到它 给你的ObjectMapper

    ObjectMapper objectMapper = new ObjectMapper()
            .registerModule(new Jdk8Module());
    

    完成后,您可以序列化您的Stream&lt;Person&gt; 很容易:

    Stream<Person> stream = getMyStream();
    OutputStream out = response.getOutputStream();
    objectMapper.writeValue(out, stream);
    

    那么 JSON 输出将如下所示:

    [{"name":"Alice","age":30},{"name":"Bob","age":31},{"name":"Charlie","age":32}]
    

    【讨论】:

      猜你喜欢
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 1970-01-01
      • 2014-01-14
      相关资源
      最近更新 更多