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

标签 c# json serialization json.net jsonconvert

我在将 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/

相关文章:

c# - 在C#中使用 "#define IDENTIFIER String"作为别名?

javascript - 转换数组并反转

c# - 使用 Flurl 发布 JSON

javascript - 如何保存带有循环引用的对象?

c# - 项目列表中每个项目的最大值

c# - 从 silverlight 应用程序访问 SQL Server 数据库

ios - Objective-c Json 解析空数组错误或 Bug?

java - 子类的序列化

python - 如何将不相关模型的查询集序列化为嵌套序列化程序?

c# - 为什么从 WM_NCPAINT 使用 DrawImageUnscaled 会导致闪烁?