You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将JSON字符串转换为真正的动态匿名类型?

解决JSON反序列化为真正动态对象的问题

方法一:使用匿名类型模板反序列化

如果清楚JSON的结构,先定义一个匹配结构的匿名类型作为模板,通过DeserializeAnonymousType方法直接生成可直接访问属性的动态对象:

// 定义与JSON结构匹配的匿名类型模板
var template = new { Event = new { Subject = "" } };
var dataFromJson = JsonConvert.DeserializeAnonymousType(message.Data, template);

此时dataFromJson.Event.Subject直接返回字符串,无需调用ToString(),SendGrid模板可直接使用{{Event.Subject}}进行替换。

方法二:反序列化为ExpandoObject

ExpandoObject是.NET原生的动态对象,配合ExpandoObjectConverter可将JSON直接转为真正的动态对象:

dynamic dataFromJson = JsonConvert.DeserializeObject<ExpandoObject>(message.Data, new ExpandoObjectConverter());

转换后直接通过dataFromJson.Event.Subject访问属性即可,完全符合SendGrid模板的语法要求。

方法三:创建强类型实体类(结构固定时推荐)

如果JSON结构固定,直接定义对应的实体类,反序列化后得到强类型对象,属性访问更直观且类型安全:

public class EventData
{
    public EventDetail Event { get; set; }
}

public class EventDetail
{
    public string Subject { get; set; }
}

var dataFromJson = JsonConvert.DeserializeObject<EventData>(message.Data);

这种方式下dataFromJson.Event.Subject直接是字符串类型,适配SendGrid模板的替换规则。

内容的提问来源于stack exchange,提问作者David Thielen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 05:38:18