gpt4 book ai didi

c# - 使用 System.Text.Json 一次读取一条记录

转载 作者:行者123 更新时间:2023-12-04 15:36:16 27 4
gpt4 key购买 nike

我正在尝试使用 .net core 3.0 一次将单个 json 记录读入内存。

本页:https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-apis/

使用阅读器给出这个例子:

byte[] data = Encoding.UTF8.GetBytes(json);
Utf8JsonReader reader = new Utf8JsonReader(data, isFinalBlock: true, state: default);

while (reader.Read())
{
Console.Write(reader.TokenType);

switch (reader.TokenType)
{
case JsonTokenType.PropertyName:
case JsonTokenType.String:
{
string text = reader.GetString();
Console.Write(" ");
Console.Write(text);
break;
}

case JsonTokenType.Number:
{
int value = reader.GetInt32();
Console.Write(" ");
Console.Write(value);
break;
}

// Other token types elided for brevity
}

Console.WriteLine();
}

在示例中,它加载了整个字节数组。我主要关心的是内存,因为我正在处理大型 json 文件,我不想只加载当前正在处理的记录(或至少是较小的 block )。

我不确定如何将字节流传递给 Utf8JsonReader 并一次读取一条记录。

使用 .net core 3.0 一次读取一条记录的简单方法是什么?

最佳答案

实现这种形式的功能的方法是将 JSON 行文件格式与 StreamReader 类一起使用。 JSON 行文件扩展名为 .jsonl。

这会在每个 JSON 对象后使用换行符修改 JSON 字符串。有了这个,您可以使用 StreamReader.ReadLine 然后反序列化整行。

查看 JSON 行 http://jsonlines.org/更多细节。

关于c# - 使用 System.Text.Json 一次读取一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59654735/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com