Json.NET & C# – How to Serialize a Collection?

Do you want to serialize an collection in your C# application?. Json.NET supports this functionality with ease.

The Collection can be an Array , Dictionary or List. You need to simply pass collection to the JsonConvert.SerializeObject static method which would serialize the collection and return you the Json string.

How to Serialize a Collection in C# using JSON.NET ?

For example , assume that you want to serialize the employee class as shown below.

public class Employee 
{ 
    public string Name { get; set; } 
    public bool IsPermanent { get; set; } 
    // Employee can belong to multiple departments 
    public List<string> Departments { get; set; } 
}

You will create the List<Employee> and fill it with the values as shown below.

List<Employee> employees = new List<Employee>(); 
//Employee 1 Data 
Employee emp1 = new Employee(); 
emp1.Name = "Employee 1"; 
emp1.IsPermanent = true; 
emp1.Departments = new List<string> {"Technology", "Design"}; 
employees.Add(emp1); 
// Employee 2 Data 
Employee emp2 = new Employee(); 
emp2.Name = "Employee 2"; 
emp2.IsPermanent = false; 
emp2.Departments = new List<string> {"Technology"}; 
employees.Add(emp2);

Once the List<Employee> data is available , pass it to the JsonConvert.Serialize method as shown below.

// Convert the collection to Json string 
string jsonData = JsonConvert.SerializeObject(employees);

Below is the complete code snippet that is used for serializing the collection in this blog post.

using System; 
using System.Collections.Generic; 
using Newtonsoft.Json;

namespace ACConsoleCSharp 
{ 
    class Program 
    { 
        static void Main(string[] args) 
        { 
            var jsonData = SerializeCollection(); 
            Console.WriteLine("Serialized Data : \n" + jsonData);       
            Console.ReadLine(); 
        }

        public static string SerializeCollection() 
        { 
            List<Employee> employees = new List<Employee>(); 
            //Employee 1 Data 
            Employee emp1 = new Employee(); 
            emp1.Name = "Employee 1"; 
            emp1.IsPermanent = true; 
            emp1.Departments = new List<string> {"Technology", "Design"}; 
            employees.Add(emp1); 
            // Employee 2 Data 
            Employee emp2 = new Employee(); 
            emp2.Name = "Employee 2"; 
            emp2.IsPermanent = false; 
            emp2.Departments = new List<string> {"Technology"}; 
            employees.Add(emp2); 
            // Convert the collection to Json string 
            string jsonData = JsonConvert.SerializeObject(employees); 
            return jsonData; 
        }      
    }

    public class Employee 
    { 
        public string Name { get; set; } 
        public bool IsPermanent { get; set; } 
        // Employee can belong to multiple departments 
        public List<string> Departments { get; set; } 
    } 
}