以下是如何从 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 不同,则需要相应地更改代码以解析正确的数据格式。
留言