我正在使用restsharp 105.2.3并且我有一个模型类的属性(CalcDate)绑定到DateTime类型,但我使用转换器来解析传入的rest响应以构建时间戳。这很有效,除非svc没有返回“calcDate”;当它丢失时,模型无法反序列化。我从 IRestResponse.ErrorMessage 获得的错误是:
“要添加的值超出范围。\ r \ nParameter name:value”
有趣的是,如果我使用原始json(缺少calcDate)并尝试使用jsonConvert构建它,那么它按预期工作,模型使用nulled calcDate构建。
> Newtonsoft.Json.JsonConvert.DeserializeObject<MyModel>(json) // works
代码:
public class MyModel {
[JsonProperty("id")]
public int Id { get; set; }
[JsonConverter(typeof(TimestampConverter))]
[JsonProperty("calcDate")]
public DateTime? CalcDate { get; set; }
}
public class TimestampConverter : JsonConverter
{
public override bool CanConvert(Type objectType)
{
return true;
}
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{
var jvalue = JValue.Load(reader);
if (jvalue.Type == JTokenType.String)
{
long val = 0;
if (long.TryParse(jvalue.ToString(), out val)) {
DateTimeOffset dto = DateTimeOffset.FromUnixTimeMilliseconds(Convert.ToInt64(val));
return dto.DateTime;
}
}
return DateTime.MinValue;
}
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{
throw new NotImplementedException();
}
}
问题:如何使用jsonConvert重新编译json?#/ p>