将浮点数反序列化为 'float' 类型而不是 Json.NET 中的默认 'double'
Deserialize float number into a 'float' type instead of default 'double' in Json.NET
其实题中已经有问题了。提供更多详细信息,我必须指定我知道自定义转换器并希望避免这种情况。我希望可能有一个 setting,我可以使用它来调整序列化程序以默认使用 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"
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
var json = "{ \"num\": 1.5 }";
var jAnon = JsonConvert.DeserializeAnonymousType(json , new { num = 0.0f }); // Use anonymous type
var jClass = JsonConvert.DeserializeObject<Json>(json); // use class
var jObj = JObject.Parse(json);
var value = jObj.GetValue("num");
value.Value<float>(); // use JObject
class Json {
public float Num {get;set;}
}
其实题中已经有问题了。提供更多详细信息,我必须指定我知道自定义转换器并希望避免这种情况。我希望可能有一个 setting,我可以使用它来调整序列化程序以默认使用 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"
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
var json = "{ \"num\": 1.5 }";
var jAnon = JsonConvert.DeserializeAnonymousType(json , new { num = 0.0f }); // Use anonymous type
var jClass = JsonConvert.DeserializeObject<Json>(json); // use class
var jObj = JObject.Parse(json);
var value = jObj.GetValue("num");
value.Value<float>(); // use JObject
class Json {
public float Num {get;set;}
}