Swiftorial Logo
Home
Swift Lessons
Matchups
CodeSnaps
Tutorials
Career
Resources

JSON Serialization in C#

Introduction

JSON (JavaScript Object Notation) is a lightweight data interchange format that is easy for humans to read and write and easy for machines to parse and generate. In C#, JSON serialization refers to the process of converting a C# object into a JSON string, and deserialization refers to the process of converting a JSON string back into a C# object.

Why Use JSON Serialization?

JSON serialization is commonly used for data exchange between a client and a server in web applications. It is also used for storing data in a format that is easy to read and understand.

Getting Started

To perform JSON serialization and deserialization in C#, you typically use the System.Text.Json namespace, which provides built-in support for JSON. Alternatively, you can use the popular third-party library Newtonsoft.Json (Json.NET).

JSON Serialization with System.Text.Json

Step 1: Add Namespace

First, ensure you are using the correct namespace:

using System.Text.Json;

Step 2: Create a C# Class

Create a sample class that you want to serialize:

public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
}

Step 3: Serialize the Object

Convert the C# object to a JSON string:

Person person = new Person { Name = "John Doe", Age = 30 };
string jsonString = JsonSerializer.Serialize(person);
Console.WriteLine(jsonString);

This will output:

{"Name":"John Doe","Age":30}

JSON Deserialization with System.Text.Json

Step 1: Deserialize the JSON String

Convert a JSON string back to a C# object:

string jsonString = "{\"Name\":\"John Doe\",\"Age\":30}";
Person person = JsonSerializer.Deserialize<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

This will output:

Name: John Doe, Age: 30

JSON Serialization with Newtonsoft.Json

Step 1: Install Newtonsoft.Json

Install Newtonsoft.Json via NuGet Package Manager:

Install-Package Newtonsoft.Json

Step 2: Add Namespace

Ensure you are using the correct namespace:

using Newtonsoft.Json;

Step 3: Serialize the Object

Convert the C# object to a JSON string:

Person person = new Person { Name = "John Doe", Age = 30 };
string jsonString = JsonConvert.SerializeObject(person);
Console.WriteLine(jsonString);

This will output:

{"Name":"John Doe","Age":30}

JSON Deserialization with Newtonsoft.Json

Step 1: Deserialize the JSON String

Convert a JSON string back to a C# object:

string jsonString = "{\"Name\":\"John Doe\",\"Age\":30}";
Person person = JsonConvert.DeserializeObject<Person>(jsonString);
Console.WriteLine($"Name: {person.Name}, Age: {person.Age}");

This will output:

Name: John Doe, Age: 30

Advanced Topics

Handling Complex Objects

JSON serialization can handle complex types, such as nested objects or lists. For example:

public class Address
{
  public string Street { get; set; }
  public string City { get; set; }
}

public class Person
{
  public string Name { get; set; }
  public int Age { get; set; }
  public Address Address { get; set; }
}

Serializing an object with nested objects will produce:

{"Name":"John Doe","Age":30,"Address":{"Street":"123 Main St","City":"Anytown"}}

Customizing JSON Serialization

Both System.Text.Json and Newtonsoft.Json allow you to customize the serialization process using attributes or settings.

Conclusion

JSON serialization is a powerful tool in C# for converting objects to JSON strings and vice versa. Understanding how to use it effectively can greatly enhance data interchange in your applications. Whether you use System.Text.Json or Newtonsoft.Json, each library provides robust functionality to meet your serialization needs.