基本的に、JavaScript オブジェクト (連想配列) である JSON 文字列とそのプロパティ/キーの 1 つに空の文字列があると、組み込みの .NET シリアライザーが例外をスローすることがわかりました。
たとえば、このコード:
string json = "{ \"\" : [\"b\"] }";
JavaScriptSerializer js = new JavaScriptSerializer();
var map = js.Deserialize<Dictionary<string, List<string>>>(json);
ArgumentException をスローし、適切な JSON ではプロパティ名に空の文字列が許可されていない可能性があることを示唆します。Crockford のサイトにあるBackaus Naur Form Diagram / Syntax Diagramをちらりと見ただけで、空の文字列が許可されていることがわかります。
object => '{' string ':' value '}'
string => ""
=> " chars "