我使用WCF WebInvokeAttribute用于声明性JSON请求(DataContractJsonSerializer), 与基于DataContractAttribute / DataMemberAttribute序列化。

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

我有具有System.Double属性的类。 如果我利用使用一个培养请求数据“”作为小数分隔,得到了一个SerializationException尝试反序列化值对于该属性,解析System.Double时:

  

“时发生错误,反序列化类型XXX的对象。数值‘1,6276’不能被解析为类型‘双’。”

这当然是因为在解析双不变培养时使用。 我希望当前线程设置上正确的文化可以解决这个问题,但事实并非如此。

因此,服务将打破为未使用任何文化“”为十进制分隔符。

将会理解的帮助。

谢谢!

有帮助吗?

解决方案

按照 JSON规范时,一个数应该使用一个周期格式化。换言之,这个问题是不能在解串器的一部分,它是在串行部件。

如果你绝对必须使用一个逗号分隔符,那么我会建议设置使用的属性类型的字符串的合同,并提供未序列化到字符串转换成十进制在你的类的附加属性(其那么你就能够通过你需要任何培养物)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top