refine json converter
This commit is contained in:
parent
4d99bf788c
commit
7f15dcd8a3
|
|
@ -16,7 +16,7 @@ public class RichContentJsonConverter : JsonConverter<IRichMessage>
|
|||
if (root.TryGetProperty("rich_type", out JsonElement element))
|
||||
{
|
||||
var richType = element.GetString();
|
||||
res = parser.ParseRichMessage(richType, jsonText, options);
|
||||
res = parser.ParseRichMessage(richType, jsonText, root, options);
|
||||
}
|
||||
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ public class TemplateMessageJsonConverter : JsonConverter<ITemplateMessage>
|
|||
if (root.TryGetProperty("template_type", out JsonElement element))
|
||||
{
|
||||
var templateType = element.GetString();
|
||||
res = parser.ParseTemplateMessage(templateType, jsonText, options);
|
||||
res = parser.ParseTemplateMessage(templateType, jsonText, root, options);
|
||||
}
|
||||
|
||||
return res;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ public class MessageParser
|
|||
{
|
||||
}
|
||||
|
||||
public IRichMessage? ParseRichMessage(string richType, string jsonText, JsonSerializerOptions options)
|
||||
public IRichMessage? ParseRichMessage(string richType, string jsonText, JsonElement root, JsonSerializerOptions options)
|
||||
{
|
||||
IRichMessage? res = null;
|
||||
|
||||
|
|
@ -36,11 +36,22 @@ public class MessageParser
|
|||
{
|
||||
res = JsonSerializer.Deserialize<TextMessage>(jsonText, options);
|
||||
}
|
||||
else if (richType == RichTypeEnum.GenericTemplate)
|
||||
{
|
||||
if (root.TryGetProperty("element_type", out var element))
|
||||
{
|
||||
var elementType = element.GetString();
|
||||
if (elementType == typeof(GenericElement).Name)
|
||||
{
|
||||
res = JsonSerializer.Deserialize<GenericTemplateMessage<GenericElement>>(jsonText, options);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
||||
public ITemplateMessage? ParseTemplateMessage(string templateType, string jsonText, JsonSerializerOptions options)
|
||||
public ITemplateMessage? ParseTemplateMessage(string templateType, string jsonText, JsonElement root, JsonSerializerOptions options)
|
||||
{
|
||||
ITemplateMessage? res = null;
|
||||
|
||||
|
|
@ -60,6 +71,17 @@ public class MessageParser
|
|||
{
|
||||
res = JsonSerializer.Deserialize<ProductTemplateMessage>(jsonText, options);
|
||||
}
|
||||
else if (templateType == TemplateTypeEnum.Generic)
|
||||
{
|
||||
if (root.TryGetProperty("element_type", out var element))
|
||||
{
|
||||
var elementType = element.GetString();
|
||||
if (elementType == typeof(GenericElement).Name)
|
||||
{
|
||||
res = JsonSerializer.Deserialize<GenericTemplateMessage<GenericElement>>(jsonText, options);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return res;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue