C# 将浮点数反序列化为';浮动';键入而不是默认值';双倍';在Json.NET中
事实上,问题已经在标题中了。提供更多详细信息,我必须说明我了解自定义转换器,并希望避免这种情况。我希望可能有一个设置,我可以使用它来调整序列化程序,以便在默认情况下使用C# 将浮点数反序列化为';浮动';键入而不是默认值';双倍';在Json.NET中,c#,floating-point,json.net,C#,Floating Point,Json.net,事实上,问题已经在标题中了。提供更多详细信息,我必须说明我了解自定义转换器,并希望避免这种情况。我希望可能有一个设置,我可以使用它来调整序列化程序,以便在默认情况下使用float而不是double 例如,我们可以使用FloatParseHandling.Decimal来代替Decimal,但不能用于float 该模型,我希望反序列化为: public class Figure { public float SideA { get; set; } public float Side
float
而不是double
例如,我们可以使用FloatParseHandling.Decimal
来代替Decimal
,但不能用于float
该模型,我希望反序列化为:
public class Figure
{
public float SideA { get; set; }
public float SideB { get; set; }
public float SideC { get; set; }
}
反序列化时没有问题。显示您的代码
#r“nuget:Newtonsoft.Json/13.0.1”
使用Newtonsoft.Json;
使用Newtonsoft.Json.Linq;
var json=“{\'num\”:1.5}”;
var jAnon=JsonConvert.DeserializeAnonymousType(json,new{num=0.0f});//使用匿名类型
var jClass=JsonConvert.DeserializeObject(json);//使用类
var jObj=JObject.Parse(json);
var值=jObj.GetValue(“num”);
value.value();//使用JObject
类Json{
公共浮点数{get;set;}
}
您将反序列化为什么?通常,我希望看到一个基于类的模型,您正在反序列化到该模型中;只需将相关属性设置为float
而不是double
?@MarcGravel感谢您的关注,我已经编辑了Q。对于这个定义,我得到了反序列化值中的double
,模型与您不匹配。浮子无法容纳一个物体double@erikkallen我没听清楚你的意思,你能解释一下你的意思吗?@anatol这就是为什么展示演示问题的代码特别有用;这在Figure
类中运行良好,例如:var obj=Newtonsoft.Json.JsonConvert.DeserializeObject(@“{”sidea”“:123.456}”)代码>和系统控制台写入线(obj.SideA)代码>等