简体   繁体   English

松弛API请求序列化

[英]Slack api request serialization

Somehow the model is not deserialized, but if change SlackResponse class to string, then inside will be raw json, as it may have settings from JSON.Net what would she normally deserializable? 不以某种方式不对模型进行反序列化,但是如果将SlackResponse类更改为字符串,则内部将是原始json,因为它可能具有JSON.Net的设置,她通常会反序列化什么?

Input data 输入数据

payload={\\"type\\":\\"message_action\\",\\"token\\":\\"000\\",\\"action_ts\\":\\"000\\",\\"team\\":{\\"id\\":\\"000\\",\\"domain\\":\\"000\\"},\\"user\\":{\\"id\\":\\"000\\",\\"name\\":\\"000\\"},\\"channel\\":{\\"id\\":\\"000\\",\\"name\\":\\"000\\"},\\"callback_id\\":\\"rm_create\\",\\"trigger_id\\":\\"000\\",\\"message_ts\\":\\"000\\",\\"message\\":{\\"bot_id\\":\\"000\\",\\"type\\":\\"message\\",\\"text\\":\\"000\\",\\"user\\":\\"000\\",\\"ts\\":\\"000\\",\\"team\\":\\"000\\"},\\"response_url\\":\\"000\\"} 有效载荷= {\\ “类型\\”:\\ “message_action \\”,\\ “标记\\”:\\ “000 \\” \\ “action_ts \\”:\\ “000 \\” \\ “团队\\”:{\\“ID \\ “:\\” 000 \\ “\\ ”域\\“:\\ ”000 \\“},\\ ”用户\\“:{\\ ”ID \\“:\\ ”000 \\“ \\ ”名称\\“:\\” 000 \\ “},\\” 通道\\ “:{\\” ID \\ “:\\” 000 \\ “\\ ”名称\\“:\\ ”000 \\“},\\ ”callback_id \\“:\\ ”rm_create \\“,\\” trigger_id \\ “:\\” 000 \\ “\\ ”message_ts \\“:\\ ”000 \\“ \\ ”消息\\“:{\\ ”bot_id \\“:\\ ”000 \\“ \\ ”类型\\“:\\” 消息\\ ”,\\ “文本\\”:\\ “000 \\”,\\ “用户\\”:\\ “000 \\”,\\ “TS \\”:\\ “000 \\”,\\ “团队\\”:\\ “000 \\”} ,\\ “response_url \\”:\\ “000 \\”}

In C# created class 在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; }
}

And controller method 和控制器方法

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

It seems that in asp.net core FromForm is not support serialization , the simplest solution is this 似乎在asp.net核心FromForm中不支持序列化 ,最简单的解决方案是这样

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM