WebInvoke / DataContractJsonSerializer,“1,6276”不能被解析为“双”
-
23-08-2019 - |
题
我使用WCF WebInvokeAttribute
用于声明性JSON请求(DataContractJsonSerializer
),
与基于DataContractAttribute
/ DataMemberAttribute
序列化。
我使用的支持返回包含基于不同文化数据JSON的服务。 默认情况下,该服务使用的en-US培养设置,这意味着小数分离器将“”
我有具有System.Double
属性的类。
如果我利用使用一个培养请求数据“”作为小数分隔,得到了一个SerializationException
尝试反序列化值对于该属性,解析System.Double
时:
“时发生错误,反序列化类型XXX的对象。数值‘1,6276’不能被解析为类型‘双’。”
这当然是因为在解析双不变培养时使用。 我希望当前线程设置上正确的文化可以解决这个问题,但事实并非如此。
因此,服务将打破为未使用任何文化“”为十进制分隔符。
将会理解的帮助。
谢谢!
解决方案
按照 JSON规范时,一个数应该使用一个周期格式化。换言之,这个问题是不能在解串器的一部分,它是在串行部件。
如果你绝对必须使用一个逗号分隔符,那么我会建议设置使用的属性类型的字符串的合同,并提供未序列化到字符串转换成十进制在你的类的附加属性(其那么你就能够通过你需要任何培养物)。
不隶属于 StackOverflow