SlackAPI - 具有动态 json 属性的负载反序列化
SlackAPI - payload deserialization with dynamic json properties
我在开发我的 SlackAPI 应用程序。
我已经创建了模态 window 并且当这个模态的表单被提交时 - 我收到一个 JSON 有效载荷,看起来像这样(不重要的 JSON 部分被删除)
{
"type":"view_submission",
"view":{
"state":{
"values":{
"IGhn":{
"e5+":{
"type":"static_select",
"selected_option":{
"text":{
"type":"plain_text",
"text":"2021\/8",
"emoji":true
},
"value":"2"
}
}
}
}
},
此有效载荷由我的端点正确处理 - 除了部分 - 状态 - 值为空值...
我有这样定义的模型:
public class View
{
...
[JsonProperty("state")]
public State State { get; set; }
...
}
public class State
{
[JsonProperty("values")]
public Dictionary<string, Values> Values { get; set; }
}
public class Values
{
[JsonProperty()] // <- This is the problem
public Dictionary<string, DynamicValue> something { get; set; }
}
public class DynamicValue
{
[JsonProperty("selectedOptions")] // <- This is null
public Dictionary<string, SelectedOption> SelectedOptions { get; set; }
}
如果值(属性 名称)是静态的,那没问题,但问题是:IGhn / e5+ 正在动态变化 - 所以反序列化不起作用...
必须说整个JSON反序列化正确,但我无法在IGhn下反序列化其余部分(我什至不知道如何为它创建class...反序列化器知道该怎么做....)
好的 - 我找到了解决方案:
我改变了 class 状态:
public class State
{
[JsonProperty("values")]
public Dictionary<string, Dictionary<string, ParentForSelectedOption>> Values { get; set; }
}
然后 Object ParentForSelectedOption 以常规方式反序列化 - 所以这些动态名称是通过使用字典来解决的
这些可以删除:
public class Values
{
[JsonProperty()] // <- This is the problem
public Dictionary<string, DynamicValue> something { get; set; }
}
public class DynamicValue
{
[JsonProperty("selectedOptions")] // <- This is null
public Dictionary<string, SelectedOption> SelectedOptions { get; set; }
}
我在开发我的 SlackAPI 应用程序。
我已经创建了模态 window 并且当这个模态的表单被提交时 - 我收到一个 JSON 有效载荷,看起来像这样(不重要的 JSON 部分被删除)
{
"type":"view_submission",
"view":{
"state":{
"values":{
"IGhn":{
"e5+":{
"type":"static_select",
"selected_option":{
"text":{
"type":"plain_text",
"text":"2021\/8",
"emoji":true
},
"value":"2"
}
}
}
}
},
此有效载荷由我的端点正确处理 - 除了部分 - 状态 - 值为空值...
我有这样定义的模型:
public class View
{
...
[JsonProperty("state")]
public State State { get; set; }
...
}
public class State
{
[JsonProperty("values")]
public Dictionary<string, Values> Values { get; set; }
}
public class Values
{
[JsonProperty()] // <- This is the problem
public Dictionary<string, DynamicValue> something { get; set; }
}
public class DynamicValue
{
[JsonProperty("selectedOptions")] // <- This is null
public Dictionary<string, SelectedOption> SelectedOptions { get; set; }
}
如果值(属性 名称)是静态的,那没问题,但问题是:IGhn / e5+ 正在动态变化 - 所以反序列化不起作用...
必须说整个JSON反序列化正确,但我无法在IGhn下反序列化其余部分(我什至不知道如何为它创建class...反序列化器知道该怎么做....)
好的 - 我找到了解决方案:
我改变了 class 状态:
public class State
{
[JsonProperty("values")]
public Dictionary<string, Dictionary<string, ParentForSelectedOption>> Values { get; set; }
}
然后 Object ParentForSelectedOption 以常规方式反序列化 - 所以这些动态名称是通过使用字典来解决的 这些可以删除:
public class Values
{
[JsonProperty()] // <- This is the problem
public Dictionary<string, DynamicValue> something { get; set; }
}
public class DynamicValue
{
[JsonProperty("selectedOptions")] // <- This is null
public Dictionary<string, SelectedOption> SelectedOptions { get; set; }
}