2011-12-01 66 views
1

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

非常感谢您的帮助!

+0

与答案同意,这些都是字符串,而不是整数 –

回答

10

如果04331和4331有不同的含义,那么它们是字符串,而不是数字。所以把它们发送成字符串。

如果你需要的话,可以填零号码,但在你的情况下这是不正确的。

4

字符串可能是您最好的选择。该JSON specification数字定义为0,或1-9开始,因此这将是不正确的行为保留前导零(甚至对付这种格式的数字!)

0

点上,一个PROD错误迫使我们我们改变一个字符串也是如此。另外,在使用Json.NET 4.5.0.0的Web Api 2中,当它尝试反序列化一个前导零的数字时,我们得到异常消息“其他不可解析字符在末尾的字符串“,这真是令人误解,并花了一段时间在大型json有效载荷中进行调试。 。

升级到Json的6.0 *在测试之后,我们看到了一些更有益的:“输入字符串‘08430228’不是一个有效的数字路径‘[属性名]’,2号线,20位。”

所以我们更新的Web API使用最新的Json.NET二进制文件,并添加这web.config文件,迫使网络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>