我正在创建一个ASP.net Core Web API项目。
我为来自Webhook(Java API)的请求创建了一个POST端点。
我的C#类:
public class Data
{
[JsonPropertyName("state")]
public string? state { get; set; }
[JsonPropertyName("lat")]
public double? lat { get; set; }
[JsonPropertyName("lng")]
public double? lng { get; set; }
[JsonPropertyName("accuracy")]
public int? accuracy { get; set; }
[JsonPropertyName("source")]
public string? source { get; set; }
[JsonPropertyName("id")]
public int? id { get; set; }
[JsonPropertyName("time")]
public DateTime? time { get; set; }
[JsonPropertyName("insertTime")]
public DateTime? insertTime { get; set; }
[JsonPropertyName("serial")]
public string? serial { get; set; }
}
所以我认为datetime可以处理以下格式:2023-03-01T15:25:00+0000 但是我总是从这种类型中得到一个错误:
"The JSON value could not be converted to System.Nullable`1[System.DateTime]. Path: $.data.time | LineNumber: 0 | BytePositionInLine: 139."
有人有解决方案吗?
提前感谢。
更新:
JSON:
{
"dataType":"location",
"data":{
"state":"STOP",
"lat":50.00,
"lng":5.00,
"source":"gps",
"id":1804885154,
"time":"2023-03-01T11:12:00+0000",
"insertTime":"2023-03-01T11:18:30+0000",
"serial":"xxxx"
}
}
完整的C#类:
public class SensolusSensorWebhook
{
[JsonProperty("dataType")]
public string? DataType { get; set; }
[JsonProperty("data")]
public Data? Data { get; set; }
}
public class Data
{
[JsonPropertyName("state")]
public string? state { get; set; }
[JsonPropertyName("lat")]
public double? lat { get; set; }
[JsonPropertyName("lng")]
public double? lng { get; set; }
[JsonPropertyName("accuracy")]
public int? accuracy { get; set; }
[JsonPropertyName("source")]
public string? source { get; set; }
[JsonPropertyName("id")]
public int? id { get; set; }
[JsonPropertyName("time")]
public DateTime? time { get; set; }
[JsonPropertyName("insertTime")]
public DateTime? insertTime { get; set; }
[JsonPropertyName("serial")]
public string? serial { get; set; }
[JsonPropertyName("thirdPartyId")]
public string? thirdPartyId { get; set; }
}
Swagger UI 信息: 在 Swagger 中的端点截图
端点代码:
[HttpPost("sensordata/sensolus")]
public async Task<ActionResult> PostSensolusWebhook([FromBody] SensolusSensorWebhook? sensorWebhook)
{
_logger.LogInformation("Falls in PostSensolusWebhook");
_logger.LogInformation($"Sensorwebhook: {sensorWebhook.ToString()}");
await _sensorTestDataService.CreateAsync(sensorWebhook);
return Ok(sensorWebhook);
}
2023-03-01T15:25:00+0000
不是与yyyy-MM-dd'T'HH:mm:ss.SSSZ
相同的格式。 - Enigmativityyyyy-MM-dd'T'HH:mm:ss.SSSZ
不是一个有效的格式。你是不是想用yyyy-MM-dd'T'HH:mm:ss.fffZ
代替它? - Enigmativitynew DateTime(2023,3,1,15,25,2).AddMilliseconds(123).ToString("yyyy-MM-dd'T'HH:mm:ss.fffZ")
将会返回2023-03-01T15:25:02.123Z
。这有帮助吗? - Enigmativity