Serializing Collections

Json.NET - Quick Starts & API Documentation
Serializing Collections

The JsonSerializer has great support for serializing and deserializing collections of objects.

### Serializing

To serialize a collection - a generic list, array, dictionary, or your own custom collection - simply call the serializer with the object you want to get JSON for. Json.NET will serialize the collection and all of the values it contains.

    Product p1 = new Product

      {

        Name = "Product 1",

        Price = 99.95m,

        ExpiryDate = new DateTime(2000, 12, 29, 0, 0, 0, DateTimeKind.Utc),

      };

    Product p2 = new Product

    {

      Name = "Product 2",

      Price = 12.50m,

      ExpiryDate = new DateTime(2009, 7, 31, 0, 0, 0, DateTimeKind.Utc),

    };

    List<Product> products = new List<Product>();

    products.Add(p1);

    products.Add(p2);

    string json = JsonConvert.SerializeObject(products, Formatting.Indented);

    //[

    //  {

    //    "Name": "Product 1",

    //    "ExpiryDate": "\/Date(978048000000)\/",

    //    "Price": 99.95,

    //    "Sizes": null

    //  },

    //  {

    //    "Name": "Product 2",

    //    "ExpiryDate": "\/Date(1248998400000)\/",

    //    "Price": 12.50,

    //    "Sizes": null

    //  }

    //]

### Deserializing

To deserialize JSON into a .NET collection just specify the collection type you want to deserialize to. Json.NET supports a wide range of collection types.

    string json = @"[

      {

        ""Name"": ""Product 1"",

        ""ExpiryDate"": ""\/Date(978048000000)\/"",

        ""Price"": 99.95,

        ""Sizes"": null

      },

      {

        ""Name"": ""Product 2"",

        ""ExpiryDate"": ""\/Date(1248998400000)\/"",

        ""Price"": 12.50,

        ""Sizes"": null

      }

    ]";

    List<Product> products = JsonConvert.DeserializeObject<List<Product>>(json);

    Console.WriteLine(products.Count);

    // 2

    Product p1 = products[0];

    Console.WriteLine(p1.Name);

    // Product 1

### Deserializing Dictionaries

Using Json.NET you can also deserialize a JSON object into a .NET generic dictionary. The JSON object's property names and values will be added to the dictionary.

    string json = @"{""key1"":""value1"",""key2"":""value2""}";

    Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json);

    Console.WriteLine(values.Count);

    // 2

    Console.WriteLine(values["key1"]);

    // value1