2017-02-16 5 views
0

Webサービスから戻ってきたJSONは、0.0と誤って表された整数を持っています。私の逆シリアル化のコードのようになります。C#で0.0を含むJSON文字列を逆シリアル化できますか?

var serializer = new JsonSerializer(); 
var ret = serializer.Deserialize<T>(jsonTextReader); 

そして、私はこのようなエラーが出る:

入力文字列「0.0」は有効な整数ではありません。

私の質問は、この文字列を解析できるように、あまり厳密ではないデシリアライズメソッドを指定する方法はありますか?

編集:Webサービスはスキーマを返しません。なぜ、デシリアライザが浮動小数点数または倍精度値ではなくintに変換しようとしているのかわかりません。

+1

を持っているはずの。 Decimal/Doubleに変更する必要がありますか? diff Jsonデシリアライザを使用するか、カスタムIntデシリアライザを記述します。彼らはそれがint(ドット/コンマの後に桁を意味しないことを意味する)と主張するかもしれないが、彼らのAPIはそれをdouble/float/decimalとして送る。 –

+0

良い点ですが、Webサービスから返されたスキーマがないので、なぜそれがintを期待しているのかわかりません。 – CamJohnson26

+4

あなたのTモデル/クラスはdouble型ではなくint型のプロパティを持っていますか? –

答えて

1

私はあなたが先に行くと、あなたは物事を簡単にするためにC#の動的型を使用することができますJson -> C#

var o = (JObject)serializer.Deserialize(myjsondata); 

であなたのクラスをレコード生成する必要があることと思います。このテクニックは、マジック・ストリングに依存しないため、簡単に再ファクタリングすることもできます。 JsonConvert.DeserializeObject<dynamic>()を使用してこの文字列を動的型に逆シリアル化し、C#で通常の方法でそのプロパティにアクセスします。

イムわからない理由youreの

入力文字列 '0.0' の取得は有効な整数ではありません。

あなたが任意のJSONデータを持っていけない場合ので、それだけではnullのままにしておいてください、あなたはそれがint型ではない。この問題

関連する問題