使用NewtonSoft的json.net,在整数值中保留前导零的最佳方法是什么?在我的应用程序中,像04331和4331这样的值具有不同的含义,因此不能选择消除前导零。我目前正在使用JSON编码之前将这些值转换为字符串。是否有可以在这里使用的json.net参数?
非常感谢您的帮助!!
答案 0 :(得分:10)
如果04331和4331具有不同的含义,则它们是字符串,而不是数字。所以把它们作为字符串发送。
如果您需要,可以将填充号码归零,但在您的情况下这不正确。
答案 1 :(得分:4)
字符串可能是你最好的选择。 JSON specification将数字定义为0
,或以1-9
开头,因此保留前导零(甚至处理该格式的数字会是不正确的行为!)
答案 2 :(得分:0)
点亮,prod错误迫使我们将我们的更改为字符串。
另外,在使用Json.NET 4.5.0.0的Web Api 2中,当它尝试反序列化前导零的数字时,我们得到了异常消息" 其他不可解析的字符在字符串"的末尾,这实际上是误导性的,需要一段时间来调试大型json有效负载。
在测试中升级到Json 6.0。*后,我们看到了一些更有用的东西:" 输入字符串' 08430228'不是有效的数字。路径' [PropertyName]',第2行,第20位。"
因此我们更新了web api以使用最新的Json.NET二进制文件并将其添加到web.config以强制web api使用该版本:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="4.5.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>