C# 松弛api请求序列化

C# 松弛api请求序列化,c#,asp.net-web-api,slack-api,C#,Asp.net Web Api,Slack Api,不知何故,该模型没有反序列化,但如果将SlackResponse类更改为string,那么内部将是原始json,因为它可能具有json.Net中的设置。她通常可以反序列化什么 输入数据 该类型的有效载荷为:目前的主要类型为:目前的主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为“行动行动行动行动行动”的主要为:目前“000万点”,而

不知何故,该模型没有反序列化,但如果将SlackResponse类更改为string,那么内部将是原始json,因为它可能具有json.Net中的设置。她通常可以反序列化什么

输入数据

该类型的有效载荷为:目前的主要类型为:目前的主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为:主要类型为“行动行动行动行动行动”的主要为:目前“000万点”,而“团队”则则则则为:主要组组组组组组组:若若若若若若若若若若若若“id”id\ \::::::“10 10 10 10 10 10 10 10.00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00”,,”,”,”,”,,,,,,,,,,,,,,,,,,,,,“message\”:{“bot\u id\”:“000\”,“type\”:“message\”\“text\”:“000\”,“user\”:“000\”,“ts\”:“000\”,“team\”:“000\”},“response\u url\”:“000\”}

在C#创建的类中

public partial class SlackResponse
{
    [JsonProperty("type")]
    public string Type { get; set; }

    [JsonProperty("token")]
    public string Token { get; set; }

    [JsonProperty("action_ts")]
    public string ActionTs { get; set; }

    [JsonProperty("team")]
    public Team Team { get; set; }

    [JsonProperty("user")]
    public Channel User { get; set; }

    [JsonProperty("channel")]
    public Channel Channel { get; set; }

    [JsonProperty("callback_id")]
    public string CallbackId { get; set; }

    [JsonProperty("trigger_id")]
    public string TriggerId { get; set; }

    [JsonProperty("message_ts")]
    public string MessageTs { get; set; }

    [JsonProperty("message")]
    public Message Message { get; set; }

    [JsonProperty("response_url")]
    public Uri ResponseUrl { get; set; }
}

public partial class Channel
{
    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("name")]
    public string Name { get; set; }
}

public partial class Message
{
    [JsonProperty("client_msg_id")]
    public Guid ClientMsgId { get; set; }

    [JsonProperty("type")]
    public string Type { get; set; }

    [JsonProperty("text")]
    public string Text { get; set; }

    [JsonProperty("user")]
    public string User { get; set; }

    [JsonProperty("ts")]
    public string Ts { get; set; }

    [JsonProperty("team")]
    public string Team { get; set; }
}

public partial class Team
{
    [JsonProperty("id")]
    public string Id { get; set; }

    [JsonProperty("domain")]
    public string Domain { get; set; }
}
控制方法

[HttpPost]
public async void Get([FromForm(Name = "payload")] SlackResponse payload)
{
}

在asp.net内核中,最简单的解决方案似乎是

[HttpPost]
public async void Get([FromForm(Name ="payload")] string jsonString)
{
    var payload= JsonConvert.DeserializeObject<SlackResponse>(jsonString);
}
[HttpPost]
公共异步void Get([FromForm(Name=“payload”)]string jsonString)
{
var payload=JsonConvert.DeserializeObject(jsonString);
}

约翰·约翰(约翰)如果使用了代码代码>>代码>>约翰(约翰)如果使用字符串作为作为该方法的输入参数,那么该字符串将是使用字符串作为约翰约翰如果使用字符串作为作为作为该方法的输入参数,那么如果使用字符串作为约翰如果使用字符串作为作为该方法的输入参数,那么该字符串将是:如果使用字符串作为该方法的方法,那么该字符串将是:<代码>净约翰约翰约翰如果如果使用字符串将是约翰约翰约翰如果使用该方法,那么,那么该字符串将是,那么该字符串将是将是:代码>净净净净净约翰约翰如果如果如果使用字符串将是约翰约翰约翰约翰如果使用字符串将是作为作为作为作为作为作为作为作为作为一个使用字符串作为一个使用字符串作为作为作为作为一个输入参数的方法的方法,那么,那么,那么,那么该方法,那么该方法,那么该方法,那么该字符串将是约翰约翰如果如果如果使用字符串将是约翰约翰如果如果使用字符串将是,那么,那么,那么该字符串将是:如果使用的约翰如果使用\“:“000\”、“message\”:“000\”、“message\”:{“bot\”id\“:“000\”、“type\”:“message\”、“text\”:“000\”、“user\”:“000\”、“ts\”:“000\”、“team\”:“000\”、“response\”url\“:“000\”
字符串包含文本有效载荷。复制时忘记删除,而不是字符串不包含
有效负载=
,那么您可能需要
[FromBody]
,而不是
[FromForm]
,因为您接收的是JSON而不是表单编码的数据。此请求是否源自Slack的API?如果是这样,那就很奇怪了。他们对JSON进行了编码,然后将其作为表单post中的表单字段提供。鉴于您收到的实际数据,我倾向于认为您的解决方案是最好的。