I am reading a json file which contains large data and deserializing it into object. I am trying to increase the performance by reading the bytes and deserialize it. But when I searched it says I have to convert it to string to deserialize it. Is there any way to deserialize directly without converting into string.
Below is what I have done.
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>));
No. There is no way to deserialize your whole object without converting it to string.
The reason is simple: The Json Deserializer has to read the while JSON (text) to be able to tokenize it. So the deserialization can happen.
Edit: What you can do is to read specific parts of your (big) text file and deserialize them. This can increase your performance. BUT: you have to use string here again
Edit2: When you say "large data", do you mean much required data or just a huge amount of bytes? Maby your class has many data that are not required (like private fields, lists that are generated dynamically). You can "remove" them from your json using the