JsonSerializer
is an instantiable class that you can use to deserialize JSON to objects or serialize objects to JSON. JsonSerializer
works with JsonReader
and JsonWriter
classes to read and write JSON. So there's a little bit more code involved in using it. However, it gives you the most flexibility, including being able to use streams, which is important for working with huge JSON files. See How to parse huge JSON file as stream in Json.NET? for more information about that.
JsonConvert
, on the other hand, is a static class. It provides convenience methods that make it easy to deserialize or serialize using minimal code. Under the covers, this class uses JsonSerializer
, as you surmised. But, crucially, JsonConvert
does not provide overloads for working with streams. Instead, all of its methods work with strings. So its intended use case is when the JSON to deserialize (or object model to serialize) is small and already in memory.
Since you said your JSON is huge, you will want to use JsonSerializer
.