2017-05-17 12 views
1

は、私が滞在して末尾のゼロを必要と切り捨てられますが、43.00は、APIでデシリアライズされたとき、それはちょうどChromeブラウザでの43の.NET API:末尾のゼロは

要求ペイロードとなりました:

enter image description here

APIコントローラで

値:私は保存することをお勧め

enter image description here

+0

それは末尾のゼロを削除いない、それは数に文字列から変換です。 – phuzi

+0

@phuziどのように2つの末尾のゼロを保持することができます –

+0

'UnitPrice'は数値であると仮定しますので、数値として保存してから適切に表示してから表示してください。 – Thomas

答えて

1

任意のコードを見ず数値を文字列として返します。それ以外の場合は末尾のゼロが毎回削除されるため

+0

私は末尾のゼロが残ることを望んでいました。 –

+0

@SimbaMeek:OPはちょうどあなたがそれらを滞在させる方法を教えました。それらを数値の代わりに文字列として保存します。より詳細な回答が必要な場合は、コードサンプルを投稿してください。 – Flater

0

したがって、WebApiのデフォルトシリアライザはJSON.Netなので、WebApiConfig.cs(WebプロジェクトのApp_Start/WebApiConfig.cs)でシリアライザ設定を変更できます。 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

FloatingParseHandlingがJsonSerializerSettingsクラスにありません –

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); 
関連する問題