我在将 JSON 字符串序列化为键/值字典时遇到问题。代码如下:
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:其他不可解析的字符位于字符串的末尾。”
var parameters = "{\"id\":070809}";
JsonConvert.DeserializeObject<Dictionary<string, string>>(parameters);
有什么建议吗?
最佳答案
您的第二个示例不是有效的 JSON。回想一下,JSON 基于 JavaScript,在该语言中,任何以 0 开头的数字文字都被解释为八进制数。有效的八进制数字是 0-7,因此如果文字包含 8 或 9,则无法解析它并会引发错误。 ('010203' 有效,因为它是有效的八进制文字,但 '070809' 不是)
关于c# - 为什么 JsonConvert 在反序列化为字典时抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492475/