1

/ベースのシリアル化を使用してWebInvokeAttribute、宣言型JSONリクエスト(DataContractJsonSerializer)にWCFを使用しています。DataContractAttributeDataMemberAttribute

異なるカルチャに基づくデータを含むJSONの返送をサポートするサービスを使用しています。デフォルトでは、このサービスはen-USカルチャ設定を使用します。つまり、小数点は「。」になります。

プロパティを持つクラスがありSystem.Doubleます。小数点記号として「、」を使用するカルチャを使用してデータを要求すると、 :SerializationExceptionを解析するときに、このプロパティの値を逆シリアル化しようとすると時間がかかります。System.Double

「タイプXXXのオブジェクトの逆シリアル化中にエラーが発生しました。値「1,6276」はタイプ「double」として解析できません。」

これは確かに、Doubleの解析中に不変のカルチャが使用されるためです。現在のスレッドに正しいカルチャを設定することでこれが修正されることを期待していましたが、修正されませんでした。

そのため、「。」を使用していないカルチャではサービスが中断されます。小数点記号として。

助けていただければ幸いです。

ありがとう!

4

1 に答える 1

3

JSON仕様によると、数値はピリオドを使用してフォーマットする必要があります。つまり、問題はデシリアライザー部分ではなく、シリアライザー部分にあります。

どうしてもコンマ区切り文字を使用する必要がある場合は、プロパティタイプの文字列を使用してコントラクトを設定し、文字列を10進数に変換するためにシリアル化されていない追加のプロパティをクラスに提供することをお勧めします(必要な文化をすべて渡すことができます)。

于 2009-04-06T17:02:53.133 に答える