gpt4 book ai didi

c# - 将字节数组直接反序列化为 JSON.Net 中的对象

转载 作者:行者123 更新时间:2023-11-30 23:19:38 26 4
gpt4 key购买 nike

我正在读取一个包含大量数据的 json 文件并将其反序列化为对象。我试图通过读取字节并反序列化来提高性能。但是当我搜索时它说我必须将它转换为字符串以反序列化它。有没有办法不转成字符串直接反序列化。

下面是我所做的。

byte[] bytesArray = File.ReadAllBytes(path);
var bytesAsString = Encoding.ASCII.GetString(bytesArray);
object person = JsonConvert.DeserializeObject<List<PersonList>>(bytesAsString);

我想去掉第二行,直接进入下一步,即跳过转字符串。

using (StreamReader file = File.OpenText(path))
{
JsonSerializer jsonSerializer = new JsonSerializer
{
NullValueHandling = NullValueHandling.Ignore
};
object person = (object)jsonSerializer.Deserialize(file, typeof(List<PersonList>));
}

上面的代码我读取了整个文件并将其转换为对象。我读取字节的目的是提高这段代码的性能。

最佳答案

没有。如果不将其转换为字符串,则无法反序列化整个对象。

原因很简单:Json 反序列化器必须读取 while JSON(文本)才能对其进行标记化。因此可以进行反序列化。

编辑:您可以做的是读取(大)文本文件的特定部分并反序列化它们。这可以提高你的表现。但是:你必须在这里再次使用字符串

Edit2:当您说“大数据”时,您是指需要大量数据还是指大量字节?也许你的类(class)有很多不需要的数据(比如私有(private)字段,动态生成的列表)。您可以使用 JsonIgnore 属性从您的 json 中“删除”它们。

关于c# - 将字节数组直接反序列化为 JSON.Net 中的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40170522/

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