C# 在.NET中反序列化JSON字符串时的小数点格式问题
如果客户端使用以下.NET对象将{f:“1,00”}传递给服务器进行反序列化,则框架无法将其识别为有效的十进制值,则会出现转换错误。客户端位于“id”区域设置,因此“1,00”实际上是十进制的“1.00” 我可以告诉框架使用正确的数字格式化程序来解决我的问题吗? 谢谢C# 在.NET中反序列化JSON字符串时的小数点格式问题,c#,.net,serialization,deserialization,C#,.net,Serialization,Deserialization,如果客户端使用以下.NET对象将{f:“1,00”}传递给服务器进行反序列化,则框架无法将其识别为有效的十进制值,则会出现转换错误。客户端位于“id”区域设置,因此“1,00”实际上是十进制的“1.00” 我可以告诉框架使用正确的数字格式化程序来解决我的问题吗? 谢谢 您还可以尝试此解决方案,以确保十进制被识别为特定格式 value = "1,00"; style = NumberStyles.AllowDecimalPoint; culture = CultureInfo.Crea
您还可以尝试此解决方案,以确保十进制被识别为特定格式
value = "1,00";
style = NumberStyles.AllowDecimalPoint;
culture = CultureInfo.CreateSpecificCulture("fr-FR");
if (Decimal.TryParse(value, style, culture, out number))
{
decimal topaas=number;
}
你能强迫你的客户不要通过,而只使用它吗。我认为,与不一样。您的客户如何创建字符串
{f:“1,00”}
?由于json序列化程序(JavaScriptSerializer、DataContractJsonSerializer、json.Net)将创建{“f”:1.00}
@L.B:我们将服务器端的十进制1.00格式化为字符串“1,00”这样我们的客户就可以看到正确的区域设置兼容值。Hi COLD告诉:我如何让内置序列化机制使用您提出的解决方案?使用公共字符串Foo{get;set;}而不是公共十进制Foo{get;set;},然后它将像这样出现“1,00”;然后使用上面的示例将其转换为十进制
value = "1,00";
style = NumberStyles.AllowDecimalPoint;
culture = CultureInfo.CreateSpecificCulture("fr-FR");
if (Decimal.TryParse(value, style, culture, out number))
{
decimal topaas=number;
}