Reputation: 29710
I am trying to serialize a Dictionary to JSON, and get the following exception:
new JavaScriptSerializer().Serialize(mydict)`
Type 'System.Collections.Generic.Dictionary`2[[System.UInt64, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.Nullable`1[[System.UInt64, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' is not supported for serialization/deserialization of a dictionary, keys must be strings or objects.
Is there an easy way to do this? Maybe converting the ulongs to strings via LINQ or something relatively terse?
Upvotes: 10
Views: 9384
Reputation: 359
use NewtonSoft.Json
instead of JavaScriptSerializer
to overcome this problem:
Ex:
JsonConvert.SerializeObject(mydict);
Upvotes: 3
Reputation: 29710
var dict = mapping.ToDictionary(item => item.Key.ToString(), item => item.Value.ToString());`
that will convert any Dictionary<K,V>
to Dictionary<string,string>
and serialization then works.
Upvotes: 18
Reputation: 28445
The blog http://dukelupus.wordpress.com/2011/05/04/asp-net-mvc-json-and-a-generic-dictionary/ describes an extension method Dictionary ToJsonDictionary(this Dictionary input)
Upvotes: 1