To manually read and write JSON Json.NET provides the T:Newtonsoft.Json.JsonReader and T:Newtonsoft.Json.JsonWriter classes.

# JsonTextReader and JsonTextWriter

JsonReader and JsonWriter are low level classes and used internally by Json.NET. To quickly work with JSON either the serializer - Serializing and Deserializing JSON SerializingJSON.htm _self or using LINQ to JSON LINQtoJSON.htm _self is recommended.

T:Newtonsoft.Json.JsonTextReader and T:Newtonsoft.Json.JsonTextWriter are used to read and write JSON text. The JsonTextWriter has a number of settings on it to control how JSON is formatted when it is written. These options include formatting, indention character, indent count and quote character.

Writing JSON with JsonTextWriter

JsonTextReader has settings on it for reading different date formats and time zones, and the culture used when reading text values.

Reading JSON with JsonTextReader

# JTokenReader and JTokenWriter

T:Newtonsoft.Json.Linq.JTokenReader and T:Newtonsoft.Json.Linq.JTokenWriter read and write LINQ to JSON objects. They are located in the N:Newtonsoft.Json.Linq namespace. These objects allow you to use LINQ to JSON objects with objects that read and write JSON such as the JsonSerializer. For example you can deserialize from a LINQ to JSON object into a regular .NET object and vice versa.

Deserializing with JTokenReader

T:Newtonsoft.Json.JsonReader
T:Newtonsoft.Json.JsonWriter
T:Newtonsoft.Json.Linq.JTokenReader
T:Newtonsoft.Json.Linq.JTokenWriter
T:Newtonsoft.Json.Bson.BsonReader
T:Newtonsoft.Json.Bson.BsonWriter