繁体   English   中英

如何保留数字中的前导零?

[英]How to preserve leading zeros in numbers?

使用NewtonSoft的json.net,在整数值中保留前导零的最佳方法是什么? 在我的应用程序中,像04331和4331这样的值具有不同的含义,因此消除前导零不是一个选择。 目前正在使用JSON编码之前将此类值转换为字符串。 这里有没有可以使用的json.net参数?

预先非常感谢您的帮助!

如果04331和4331具有不同的含义,则它们是字符串,而不是数字。 因此,将它们作为字符串发送。

如果需要,可以将填充数字设为零,但这在您的情况下是不正确的。

字符串可能是您最好的选择。 JSON规范将数字定义为0或以1-9开头,因此保留前导零(甚至处理该格式的数字!)将是不正确的行为。

当场,产品错误迫使我们也将我们也更改为字符串。

顺便说一句,在使用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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM