0

我有一个问题,当将 json 从客户端传递到 bakend 时,一个属性无法映射到实体。这是我作为参数收到的模型。

public class Utnker
{
    public string Property1 { get; set; }
    ...
    public TimeSpan time { get; set; }
}

当我使用字符串打发时间时,它无法触发bakend。

let Data = {
  'Property':'b',
  'time':'10.12:6:8'
};
fetch('', {
  method: 'POST',
  mode: 'cors',
  credentials: 'include',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  },
  body: JSON.stringify(Data)
}).then(function(response) {
  console.log(response);
});

当我使用本地 json 转换器转换 json 时,它可以得到预期的结果。

4

1 回答 1

0

您可以使用 newtonsoft 来转换 json。但是如果不想使用插件,可以自定义一个jsonconverter。

public class TimeSpanConverter : JsonConverter<TimeSpan>
{
  public override TimeSpan Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options)
  {
    return TimeSpan.Parse(reader.GetString());
  }
  public override void Write(Utf8JsonWriter writer, TimeSpan value, JsonSerializerOptions options)
  {
    writer.WriteStringValue(value.ToString());
  }
}

然后在启动时注册它。

services.AddControllers()
    .AddJsonOptions(options =>
        options.JsonSerializerOptions.Converters.Add(new TimeSpanConverter())

);
于 2021-03-08T11:32:45.850 回答