2017-10-17 9 views
0

私の.netアプリケーションで私はSystem.Web.Mvc 5.2.3.0を使用しています。私のクライアントは、コンテンツタイプとJSONを投稿されています。私のコントローラは、このjsonで小数点を認識するためにasp.net mvcを取得するにはどうすればよいですか?

[HttpPut(), Route("/ExchangeRate/{exchkey}")] 
public HttpResponseMessage PutCurrencyExchange(string exchkey, [FromBody()] JObject jsonData) 
{... 

を受信した時点では「アプリケーション/ jsonの」

{From: "EUR", To: "USD", Rate: 0.00001} 

JOBJECTのレートは、文字列「1E-05」です。

私は強く型付けされたオブジェクトをデシリアライズするために非常に古い例の数を発見したカスタム・コンバータについて https://www.newtonsoft.com/json/help/html/N_Newtonsoft_Json_Converters.htm と契約リゾルバhttps://www.newtonsoft.com/json/help/html/CustomContractResolver.htm

を読みました。しかし、私はちょうど私のコントローラのJObjectが10進数として小数を正しく表すことを可能にする簡単な設定変更が欠けていると思っています。注:クライアントが値を文字列化すると、正しく解析されることを認識しています。しかし、私はエンドポイントの消費者が最初に値をストリング化するよう指示することはできません。

+0

というのが私の間違いを変更することができるしている場合ではなく、身体からより個々のパラメータを含むコントローラのアクションとのより良い運を持っていた...レートではなく、文字列ダブル、として来ています。ウォッチウィンドウはちょうど1E-05としてこれを表しました。ダウンストリームは文字列に変換されていましたが、小数点に変換しようとしていましたが失敗していました。私の悪い。 –

答えて

1

私はあなたが

+0

'[FromBody()] JObject jsonData'と比較して、'(string From、string To、double Rate) 'をパラメータとして定義することがより簡単で、メンテナンスが容易です。 –

+0

私は貢献を感謝します。しかし、これは私のアプリケーションでは、投稿されたデータが本文にある必要がある多くのエンドポイントで問題になる可能性があります。 –

関連する問題