为什么 JsonConvert 在反序列化为字典时抛出异常

Why is JsonConvert throwing exception when deserializing to a dictionary

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

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

这个例子看起来很完美,给了我 {[id,123]}。

现在。当我将数字更改为“070809”之类的内容时,我突然遇到异常:"Newtonsoft.Json.JsonReaderException: Input string '070809' is not a valid number. Path 'id', line 1, position 12. ---> System.FormatException: Additional non-parsable characters are at the end of the string."

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

有什么建议吗?

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