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
+