1

我将 WCFWebInvokeAttribute用于声明性 JSON 请求 ( DataContractJsonSerializer),并带有DataContractAttribute/DataMemberAttribute基于的序列化。

我使用的服务支持返回包含基于不同文化的数据的 JSON。默认情况下,此服务使用 en-US 文化设置,这意味着小数分隔符将为“.”。

我有一个有System.Double属性的类。如果我使用使用“,”作为小数分隔符的区域性请求数据SerializationException,则在解析以下内容时,我会尝试反序列化此属性的值System.Double

“反序列化 XXX 类型的对象时出错。值 '1,6276' 无法解析为类型 'double'。”

这当然是因为在解析 Double 时使用了不变的文化。我希望在当前线程上设置正确的文化可以解决这个问题,但它没有。

因此,对于任何不使用“.”的文化,服务都会中断。作为小数分隔符。

将感谢帮助。

谢谢!

4

1 回答 1

3

根据JSON Specification,数字应使用句点格式化。换句话说,问题不在 Deserializer 部分,而在 Serializer 部分。

如果您绝对必须使用逗号分隔符,那么我建议使用属性类型的字符串设置合同,并在您的类上提供一个未序列化的附加属性以将字符串转换为小数(然后您将能够传递你需要的任何文化)。

于 2009-04-06T17:02:53.133 回答