这似乎是.NET的JavaScript反序列化中的一个错误......是吗?

时间:2012-05-11 20:34:32

标签: .net json serialization javascriptserializer

基本上,我发现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 "

1 个答案:

答案 0 :(得分:4)

是的。这肯定对我来说是一个错误。这绝对有效:

var x = {"" : ["b"]}
alert(x[""]); 

我不是说你应该这样做,但你可以在JS中做到这一点。

编辑话虽如此。你的代码适合我。您使用的是什么版本的.NET?

编辑已确认。它在.NET 3.5中断开,但在4.0中工作。