基本上,我发现JSON字符串是一个JavaScript对象(关联数组),其中一个属性/键的空字符串将导致内置的.NET Serializer抛出异常。
例如这段代码:
string json = "{ \"\" : [\"b\"] }";
JavaScriptSerializer js = new JavaScriptSerializer();
var map = js.Deserialize<Dictionary<string, List<string>>>(json);
将抛出ArgumentException,表明可能正确的JSON不允许空字符串用于属性名称。只需浏览Backaus Naur Form Diagram网站上的Syntax Diagram / Crockford’s即可获得空字符串。
object => '{' string ':' value '}'
string => ""
=> " chars "
答案 0 :(得分:4)
是的。这肯定对我来说是一个错误。这绝对有效:
var x = {"" : ["b"]}
alert(x[""]);
我不是说你应该这样做,但你可以在JS中做到这一点。
编辑话虽如此。你的代码适合我。您使用的是什么版本的.NET?
编辑已确认。它在.NET 3.5中断开,但在4.0中工作。