将字节数组直接反序列化为JSON.Net中的Object

时间:2016-10-21 07:14:33

标签: c# json serialization

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

以下是我的所作所为。

super("Whatever you want");

我想删除第二行并直接进入下一步,即跳过转换为字符串。

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

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

2 个答案:

答案 0 :(得分:1)

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

原因很简单:Json Deserializer必须读取while JSON(text)才能对其进行标记。因此反序列化可能会发生。

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

Edit2:当您说&#34;大数据&#34;时,您的意思是需要多少数据还是只需要大量字节? Maby您的类有许多不需要的数据(如私有字段,动态生成的列表)。你可以&#34;删除&#34;使用JsonIgnore属性从你的json中获取它们。

答案 1 :(得分:1)

你需要字符串来反序列化......但也许你可以直接调用System.IO.File.ReadAllText()...但我不认为这会极大地提高速度,因为ReadAllText也必须编码。