using System.Collections;
using System.Collections.Generic;
using Newtonsoft.Json.Serialization;
public static void Main()
foo.Dict = new Dictionary<string, string>();
foo.Dict.Add("Gee", "Whiz");
foo.Dict.Add("Fizz", "Bang");
JsonSerializerSettings settings = new JsonSerializerSettings();
settings.Formatting = Formatting.Indented;
settings.ContractResolver = new DictionaryAsArrayResolver();
string json = JsonConvert.SerializeObject(foo, settings);
foo = JsonConvert.DeserializeObject<Foo>(json, settings);
foreach (var kvp in foo.Dict)
Console.WriteLine(kvp.Key + ": " + kvp.Value);
public Dictionary<string, string> Dict { get; set; }
class DictionaryAsArrayResolver : DefaultContractResolver
protected override JsonContract CreateContract(Type objectType)
if (objectType.GetInterfaces().Any(i => i == typeof(IDictionary) ||
(i.IsGenericType && i.GetGenericTypeDefinition() == typeof(IDictionary<,>))))
return base.CreateArrayContract(objectType);
return base.CreateContract(objectType);