JSON in C#
Serialize and deserialize JSON using System.Text.Json — JsonSerializer, [JsonPropertyName], options, handling null, unknown properties, and deserializing to generic types.
Introduction to JSON
What is JSON?
JSON is a text format for structured data — used in APIs, config files, and databases.
JSON Data Types
Supported JSON Types
JSON supports 6 types: string, number, boolean, null, array, object.
JSON Syntax Rules
JSON Rules
Keys must be double-quoted strings; no trailing commas; no comments.
Serialize Object to JSON
Basic Serialization
Convert a C# object to a JSON string with JsonSerializer.Serialize().
Pretty Print (Indented)
Produce human-readable JSON with WriteIndented = true.
Serialize a Class (POCO)
Serialize a plain C# class with public properties.
Deserialize JSON to Object
Basic Deserialization
Convert a JSON string back to a C# object with JsonSerializer.Deserialize<T>().
Nested Objects & Arrays
Deserialize JSON with nested objects and arrays into matching C# classes.
Deserialize to Dictionary
Parse JSON into a Dictionary<string, object> without a target class.
Handling Invalid JSON
Safe Parsing with try/catch
Catch JsonException to handle malformed JSON without crashing.
Handling Unknown Fields
Ignore Unknown Properties
Prevent errors when JSON has extra fields not in your C# class.
[JsonPropertyName] — Custom Field Names
Map JSON Keys to C# Properties
Use [JsonPropertyName] to map snake_case JSON keys to PascalCase C# properties.
Global camelCase Policy
Apply camelCase to all property names using JsonNamingPolicy.
Deep Cloning with JSON
Deep Clone via Serialize → Deserialize
Create a fully independent copy of an object by round-tripping through JSON.
Validating a JSON String
Check if a String is Valid JSON
Use JsonDocument.Parse() inside a try/catch to validate JSON syntax.
Safe Parse Helper
Return a result object instead of throwing — ok/error pattern.