Nested objects become their own classes
The top-level object becomes a class named Root. Every nested object becomes a separate public class named after its key in PascalCase, so "customer" produces a Customer class and a Customer Customer property on its parent. If two objects would get the same class name, the second one gets a number suffix (Address2).
Arrays become List<T>
Arrays map to List<T>, with T taken from the first non-null element: List<string>, List<int>, or a generated class for an array of objects. An empty array becomes List<object>. Only the first object of an array is inspected, so fields that appear only in later items are not added, and class names are not singularized ("items" gives List<Items>; rename it to Item if you prefer).
Types, nulls and optional fields
Whole numbers become int (long when the value is outside the Int32 range), decimals become double, true/false become bool, and every string, including dates and GUIDs, stays string. A JSON null has no type, so it becomes object, or object? with the Nullable option on. A single sample cannot show which fields are optional, so change types such as int?, decimal or DateTimeOffset by hand where your data needs them.
PascalCase names and serializer attributes
Keys in snake_case, kebab-case or camelCase are turned into PascalCase property names (full_name → FullName). Each property keeps the original key in an attribute, [JsonPropertyName("full_name")] for System.Text.Json or [JsonProperty("full_name")] for Newtonsoft.Json, so the C# name can differ from the JSON key. Keys that are not valid C# identifiers, such as ones starting with a digit, are not fixed for you and need a manual rename.
Classes or records?
The generator always writes mutable public class types with { get; set; } properties, which both serializers read and write. It does not generate records. If you want immutable DTOs, convert a class by hand, for example public record Customer([property: JsonPropertyName("full_name")] string FullName);. System.Text.Json (.NET 5 and later) and Newtonsoft.Json can both deserialize through a record's constructor.
Plain DTOs and POCOs
The output contains only properties: no base classes, constructors or methods. That makes the classes plain POCOs you can use as request and response DTOs in ASP.NET Core controllers, as the target type for HttpClient calls, or as configuration models. The file starts with the using lines the attributes need; Newtonsoft.Json also needs its NuGet package.