System.Text.Json-Json值无法转换为System.String



我有以下json被发送到api

{
"Id":22,
"UserId":22,
"Payload":{
"Field":"some payload value"
...more unknown field/values go here
},
"ContextTypeId":1,
"EventTypeId":1,
"SessionId":1
}

我想把它映射到以下位置:

public class CreateTrackItem : IRequest<int>
{  
public int Id { get; set; }
public int UserId { get; set; }
public string Payload { get; set; }
public int ContextTypeId { get; set; }
public int SessionId { get; set; }
public int EventTypeId { get; set; }
}

当映射Payload属性失败,无法将json映射到字符串时,我只希望Payloadjsonstring版本(将进入postgres中的jsonb字段(

我使用的是.NET Core 3.0,如果可能的话,在切换到Newtonsoft之前,我更喜欢使用内置的System.Text.Json

如果您使用的是asp.net核心3.0(或带有.net 6的System.Text.Json(,那么它具有内置的JSON支持。我使用了以下内容,它在不设置自定义输入处理程序的情况下工作。

//// using System.Text.Json;
[HttpPost]
public async Task<IActionResult> Index([FromBody] JsonElement body)
{
string json = System.Text.Json.JsonSerializer.Serialize(body);
return Ok();
}

您可以使用Object类型而不是字符串。或者使用Newtonsoft的JToken类型,正如Ryan在上面评论的那样。

公共对象有效负载{get;set;}

public class CreateTrackItem : IRequest<int>
{  
public int Id { get; set; }
public int UserId { get; set; }
public object Payload { get; set; }
public int ContextTypeId { get; set; }
public int SessionId { get; set; }
public int EventTypeId { get; set; }
}

相关内容

最新更新