我正在读取一个包含大数据并将其反序列化为对象的json文件。我试图通过读取字节并反序列化来提高性能。但是当我搜索它时,我必须将其转换为字符串以反序列化它。有没有办法直接反序列化而不转换成字符串。
以下是我的所作所为。
super("Whatever you want");
我想删除第二行并直接进入下一步,即跳过转换为字符串。
byte[] bytesArray = File.ReadAllBytes(path);
var bytesAsString = Encoding.ASCII.GetString(bytesArray);
object person = JsonConvert.DeserializeObject<List<PersonList>>(bytesAsString);
上面的代码我读了整个文件并将其转换为对象。我读取字节的目的是提高此代码的性能。
答案 0 :(得分:1)
没有。 如果不将整个对象转换为字符串,则无法对其进行反序列化。
原因很简单:Json Deserializer必须读取while JSON(text)才能对其进行标记。因此反序列化可能会发生。
编辑:您可以做的是阅读(大)文本文件的特定部分并对其进行反序列化。这可以提高您的表现。但是:你必须再次使用字符串
Edit2:当您说&#34;大数据&#34;时,您的意思是需要多少数据还是只需要大量字节? Maby您的类有许多不需要的数据(如私有字段,动态生成的列表)。你可以&#34;删除&#34;使用JsonIgnore
属性从你的json中获取它们。
答案 1 :(得分:1)
你需要字符串来反序列化......但也许你可以直接调用System.IO.File.ReadAllText()...但我不认为这会极大地提高速度,因为ReadAllText也必须编码。