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)