著者advises usそれはあなたが何ができるかですので「これはあなたのために重要である場合はNaNを安全にするために、二重フロート/ためJsonConverterを書く」ために:
class LawAbidingFloatConverter : JsonConverter {
public override bool CanRead
{
get
{
return false;
}
}
public override bool CanWrite
{
get
{
return true;
}
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
var val = value as double? ?? (double?) (value as float?);
if (val == null || Double.IsNaN((double)val) || Double.IsInfinity((double)val))
{
writer.WriteNull();
return;
}
writer.WriteValue((double)val);
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
throw new NotImplementedException();
}
public override bool CanConvert(Type objectType)
{
return objectType == typeof(double) || objectType == typeof(float);
}
}
をし、それを使用します。
float
サポートと
var settings = new JsonSerializerSettings();
var floatConverter = new LawAbidingFloatConverter();
settings.Converters.Add(floatConverter);
var myConverter = new JsonNetSerializer(settings);
はdouble' **と** '' float'では動作しません - ? 'doubleとして' ** 'null'なので、常に**です! –
あなたはそうです、それは 'float'のためには機能しません。値が浮動小数点だが '(double?)(float?)value'が大丈夫なときに'(double?)value'が 'null'を返すのはなぜか分かりません。私は、実用的なソリューションで私の答えを更新しました。ありがとう! –