为什么反序列化到字典时JsonConvert会引发异常

时间:2018-07-24 07:05:50

标签: c# json serialization json.net jsonconvert

我在将JSON字符串序列化为键/值字典时遇到问题。代码如下:

var parameters = "{\"id\":123}";
JsonConvert.DeserializeObject<Dictionary<string, string>>(parameters);

该示例似乎工作得很好,给了我{[id,123]}。

现在。当我将数字更改为“ 070809”时,突然出现异常:“ Newtonsoft.Json.JsonReaderException:输入字符串'070809'不是有效数字。路径'id',第1行,位置12。- -> System.FormatException:其他不可解析的字符位于字符串的末尾。“

var parameters = "{\"id\":070809}";
JsonConvert.DeserializeObject<Dictionary<string, string>>(parameters);

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

您的第二个示例不是有效的JSON。回想一下,JSON是基于JavaScript的,在该语言中,任何以0开头的数字文字都将被解释为八进制数。有效的八进制数字是0-7,因此,如果文字包含8或9,则无法对其进行解析,并且会引发错误。 (“ 010203”有效,因为它是有效的八进制文字,但“ 070809”无效)