不以某种方式对模型进行反序列化,但是如果将SlackResponse类更改为字符串,则内部将是原始json,因为它可能具有JSON.Net的设置,她通常会反序列化什么?
输入数据
payload = {\“ type \”:\“ message_action \”,\“令牌\”:\“ 000 \”,\“ action_ts \”:\“ 000 \”,\“ team \”:{\ “ id \”:\“ 000 \”,\“域\”:\“ 000 \”},\“用户\”:{\“ id \”:\“ 000 \”,\“名称\”:\ “ 000 \”},\“ channel \”:{\“ id \”:\“ 000 \”,\“名称\”:\“ 000 \”},\“ callback_id \”:\“ rm_create \”, \“ trigger_id \”:\“ 000 \”,\“ message_ts \”:\“ 000 \”,\“ message \”:{\“ bot_id \”:\“ 000 \”,\“ type \”:\ “消息\”,\“文本\”:\“ 000 \”,\“用户\”:\“ 000 \”,\“ ts \”:\“ 000 \”,\“团队\”:\“ 000 \“},\” response_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)
{
}
答案 0 :(得分:1)
似乎在asp.net核心FromForm is not support serialization中,最简单的解决方案是
[HttpPost]
public async void Get([FromForm(Name ="payload")] string jsonString)
{
var payload= JsonConvert.DeserializeObject<SlackResponse>(jsonString);
}