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

时间:2011-12-01 00:33:45

标签: javascript json json.net

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

非常感谢您的帮助!!

3 个答案:

答案 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>