- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在生成一个 json 对象,
{
"number":0100
}
当此对象在 C# 中使用 Newtonsoft.Json 反序列化时,0100 由于前导零而被视为八进制数。有没有办法覆盖此功能并使其将数字视为十进制整数?
最佳答案
如果 Newtonsoft.Json 这样做,那么它就是一个错误。根据记录在 http://json.org 上的 JSON 语法:
"A number is very much like a C or Java number, except that the octal and hexadecimal formats are not used."
并且语法图不允许数字有一个前导的无意义零。
RFC 4627第 2.4 节。同意:
"Octal and hex forms are not allowed. Leading zeros are not allowed."
所以实际上,根据 RFC,您对前导零的使用根本不是有效的 JSON ...。
所以,回答你的问题:
Is there a way to override this functionality and make it consider the number as a decimal integer?
可能不会。此外,您不应该这样做。相反,您应该修复 JSON,或者向生成它的人提示它不符合标准。
您还应该将此报告为 Newtonsoft.Json 中的错误。
。不要打扰。作者不承认这是一个错误。我建议切换到正确实现 JSON 规范的 JSON 库。
给 JSON 实现者的建议
JSON 规范(两个版本)明确指出不允许使用十六进制和八进制形式。
如果您将对十六进制和/或八进制(或其他一些非官方“扩展”)的支持添加到您的 JSON 解析器,那么您将添加到 JSON 标准的碎片中。这很糟糕。
这也是一个坏主意,因为当不重要的前导零被视为八进制标记时,许多最终用户会感到惊讶。这导致了这样的问题......(我猜)OP 的最终用户已经被烧毁,并要求他修复 >>his<< 代码以“正确”处理前导零。
此处的正确行为是严格实现 JSON 规范,并拒绝任何带有不重要前导零的数字。 (就个人而言,我会为此和“0x...”十六进制形式实现特殊情况的错误消息。)
关于c# - 覆盖 Json 反序列化带有前导零的数字作为十进制而不是八进制值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29048110/
需要帮助将这些给定的数字打印成星号,但我是编程新手;我该怎么做? #include int main(void) { int a[5]={20,1,5,15,12}; int i=0
使用 Delphi XE 2 我试图确定缩放方向以将缩放效果应用于图像(TImage),但没有找到执行此操作的函数,并且图像的 OnGesture 事件中的 EventInfo 属性没有此信息. 我见
我不知道制服在内存中是如何表示的。 制服似乎会占用宝贵的寄存器空间,但它们最终会传入/通过/传出到全局内存中,对吗? 制服不用时情况会发生变化吗?编译器可以将它们优化掉吗?--在这种情况下,我已经将无
我正在尝试在名为“timeclock”的模型上记录“time_in”和“time_out”记录。这是我想做但无法开始工作的事情! 检查最后一个时钟条目,看看它是否同时填充了“time_in”和“tim
我想听听您如何解决这种编程任务!?每种类型(OPER = 1 类型)对应一种特定的信息。 这只是大约 10 个具有相同结构的规范之一。首选创建这些“转换器”(协议(protocol))的通用方法。 最
我正在使用 Rest API(NodeJS、Express)和 PostgreSQL 制作 React-Native 应用。 在我的本地机器上托管时一切正常。当 API 托管在我的机器上并且 Post
我是一名优秀的程序员,十分优秀!