我在将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);
有什么建议吗?
答案 0 :(得分:4)
您的第二个示例不是有效的JSON。回想一下,JSON是基于JavaScript的,在该语言中,任何以0开头的数字文字都将被解释为八进制数。有效的八进制数字是0-7,因此,如果文字包含8或9,则无法对其进行解析,并且会引发错误。 (“ 010203”有效,因为它是有效的八进制文字,但“ 070809”无效)