2011-12-01 65 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>