【发布时间】:2012-05-11 20:34:32
【问题描述】:
基本上,我发现作为 JavaScript 对象(关联数组)的 JSON 字符串,其属性/键之一为空字符串会导致内置 .NET 序列化程序引发异常。
例如这段代码:
string json = "{ \"\" : [\"b\"] }";
JavaScriptSerializer js = new JavaScriptSerializer();
var map = js.Deserialize<Dictionary<string, List<string>>>(json);
将抛出 ArgumentException,表明可能正确的 JSON 不允许属性名称为空字符串。只需浏览Crockford’s 网站上的Backaus Naur Form Diagram / Syntax Diagram 即可表明允许使用空字符串。
object => '{' string ':' value '}'
string => ""
=> " chars "
【问题讨论】:
-
几周前我将代码切换到 JSON.NET,发现它好多了。如果可以选择的话,也许值得一试。
标签: .net json serialization javascriptserializer