以下是如何从 HTTP 流中读取 NDJSON 数据的示例代码:

import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.MappingIterator;
import com.fasterxml.jackson.databind.JsonNode;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class ReadNdjsonFromHttp {
    public static void main(String[] args) throws IOException {
        String urlStr = "https://example.com/ndjson-data";
        URL url = new URL(urlStr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");

        BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
        ObjectMapper mapper = new ObjectMapper();

        // 映射 HTTP 响应流中的每一行数据到 JsonNode
        MappingIterator<JsonNode> it = mapper.readerFor(JsonNode.class).readValues(reader);
        while (it.hasNext()) {
            JsonNode node = it.next();
            // 处理每一行数据
            System.out.println(node.toString());
        }
        reader.close();
        conn.disconnect();
    }
}

上述代码首先使用 HttpURLConnection 从指定的 URL 获取 HTTP 响应流,然后将该响应流传递给 BufferedReader 来逐行读取数据。接下来,使用 Jackson 的 ObjectMapper 类将 HTTP 响应流中的每一行数据映射为一个 JsonNode 实例,并在控制台打印出该实例的字符串表示形式。

需要注意的是,此示例假设 HTTP 响应流的 Content-Type 是 application/x-ndjson。如果 Content-Type 不同,则需要相应地更改代码以解析正确的数据格式。

最后修改日期: 2023年5月17日

留言

撰写回覆或留言