How to use System.Text.Json in .NET
Why We Need JSON Handlers
We have multiple formats to represent data but JSON has got the big fan following , it is extensively used for sending-receiving data in applications. It is easy to read and flexible , but to work our application properly we need something that can convert the data into forms which are easy to understand by us and compatible with our data models. That’s where JSON handlers come.
Famous Names in JSON Handling World
We have two libraries that have downloads in billions at Nuget Package Manager :
- Newtonsoft.Json (3.07B Downloads)
- System.Text.Json (1.01B Downloads)
I have covered first one in my LinkedIn Post , today we are going to explore System.Text.Json which is owned by Microsoft.
How to use System.Text.Json
Install Nuget Package System.Text.Json
and use it BINGO! Let’s see simple demonstration.
using System.Text.Json;
var dotnetNewsletter = new Newsletter
{
Name = "Waseem Newsletter",
Category = ".NET",
IssuesPerMonth = 4
};
string json = JsonSerializer.Serialize(dotnetNewsletter);
var newsletter = JsonSerializer.Deserialize<Newsletter>(json);
public class Newsletter
{
public string Name { get; set; } = string.Empty;
public string Category { get; set; } = string.Empty;
public int IssuesPerMonth { get; set; }
}
It has got some nice attributes as well that can be helpful , let’s see few of them
JsonRequired Attribute
using System.Text.Json;
using System.Text.Json.Serialization;
string json = "{\"Name\":\"Waseem Newsletter\",\"Category\":\".NET\"}";
// Throws JsonException because requested prop is missing
var newsletter = JsonSerializer.Deserialize<Newsletter>(json);
public class Newsletter
{
public string Name { get; set; } = string.Empty;
public string Category { get; set; } = string.Empty;
[JsonRequired]
public int IssuesPerMonth { get; set; }
}
JsonPropertyName Attribute
using System.Text.Json;
using System.Text.Json.Serialization;
var newsletter = new Newsletter
{
Name = "C# Corner",
Category = "Programming",
IssuesPerMonth = 12
};
string json = JsonSerializer.Serialize(newsletter);
// {"NewsletterName":"C# Corner", "Category": "Programming", "IssuesPerMonth":12}
Console.WriteLine(json);
class Newsletter
{
[JsonPropertyName("NewsletterName")]
public string Name { get; set; } = string.Empty;
public string Category { get; set; } = string.Empty;
public int IssuesPerMonth { get; set; }
}
On similar fashion it has got few more attributes as well that you can explore
- JsonIgnore
- JsonConverter
quote
Whenever you're ready, there are 3 ways I can help you:
- Subscribe to my youtube channel : For in-depth tutorials, coding tips, and industry insights.
- Promote yourself to 9,000+ subscribers : By sponsoring this newsletter
- Patreon community : Get access to all of my blogs and articles at one place