2017-05-17 34 views
1

我需要尾隨零留下,但在43.00的API被反序列化,它只是成爲Chrome瀏覽器43.NET API:尾隨零被截斷

請求負載:

enter image description here

在API控制器

值:

enter image description here

+0

它不刪除尾部零,它是將它從一個字符串的數字。 – phuzi

+0

@phuzi我們如何保留兩個尾隨的零 –

+0

我假設一個'UnitPrice'是一個數值,所以保持它作爲一個數字,並在顯示前正確格式化 – Thomas

回答

1

沒有看到任何代碼,我會建議保存數字作爲一個字符串。因爲否則每次都會刪除尾隨的零

+0

我一直希望尾隨的零能夠留下。 –

+0

@SimbaMeek:OP剛剛告訴你如何讓他們留下來。將它們保存爲字符串而不是數字值。如果您需要更詳細的答案,請發佈代碼示例,以便我們可以查看它。 – Flater

0

因此,WebApi的默認序列化程序是JSON.Net,因此您可以在WebApiConfig.cs中更改序列化程序設置(在App_Start/WebApiConfig.cs中的Web項目中) Register(HttpConfiguration config)方法。

var formatter = config.Formatters.JsonFormatter; 
formatter.SerializerSettings.FloatParseHandling = Newtonsoft.Json.FloatParseHandling.Decimal; 

這應該是所有你需要做的,以確保尾隨小數保留。

+0

我在哪裏放置你的代碼。目前我有: 公共靜態類WebApiConfig { 公共靜態無效的寄存器(HttpConfiguration配置) { config.Routes.MapHttpRoute( 名稱: 「DefaultApi」, routeTemplate:「API/{控制器}/{ID} 「, 默認值:new {id = RouteParameter.Optional}, ); } } –

+0

更新了文件位置的答案。 – robjam

+0

從JsonSerializerSettings類中缺少FloatParseHandling –

0

間接的解決方法是將數據庫中的UnitPrice列配置爲2位小數。因此在數據庫中保存43將是43.00。

PostgreSQL中:

ALTER TABLE <tablename> ADD COLUMN "UnitPrice" numeric(50,2); 

,或者如果單價列已經在表中的現有:

ALTER TABLE <tablename> ALTER COLUMN "UnitPrice" type numeric(50,2);