C# 反序列化对象正在生成双括号

C# 反序列化对象正在生成双括号,c#,asp.net,json,.net,json.net,C#,Asp.net,Json,.net,Json.net,我有一个方法,我反序列化来自AWS Lambda的JSON消息 下面是课堂: public class SendEmailMessage { public string From { get; set; } public string To { get; set; } public string Subject { get; set; } public object Data { get; set; } public int TemplateId { ge

我有一个方法,我反序列化来自AWS Lambda的JSON消息

下面是课堂:

public class SendEmailMessage
{
    public string From { get; set; }
    public string To { get; set; }
    public string Subject { get; set; }
    public object Data { get; set; }
    public int TemplateId { get; set; }

    public List<string> Attachments { get; set; }
}
所有工作正常,但数据在反序列化后看起来是这样的,在2个括号中

这是展开视图,所以我认为它不是正确的对象


如何将其转换为有效的C#对象?

请注意,您看到的是调试器为您生成的对象的字符串表示形式(可能使用对象的
ToString()
方法,但可能不是)——它不一定完全对应于其中的内容!在调试器中展开
Data
成员,并实际了解对象类型及其属性。它们看起来正确吗?编辑了我的问题@Canton7
data
的数据类型只是
object
——那么json.net如何知道要放入哪种类型的对象呢?它不能直接创建
对象的实例,因为它不能在其上设置任何属性。相反,从外观上看,它所做的是分配一个type值,这是它所能做的最好的。如果希望
数据
属性具有特定类型,则需要为其指定该类型。例如,您可能希望它是一个
字典
或其他什么?
数据
被声明为
对象
。反序列化后是什么类型?必须是匿名的object@phuzi
public async Task ProcessMessageAsync(SQSEvent.SQSMessage message, ILambdaContext context)
{
        try
        {
            var emailRequest = JsonConvert.DeserializeObject<SendEmailRequest>(message.Body);
            var email = JsonConvert.DeserializeObject<SendEmailMessage>(emailRequest.Message);              
            await SendEmail(email.From, email.To, email.Subject, email.Attachments, email.Data);
        }
        catch (Exception e)
        {
            context.Logger.LogLine($"Message processing failed: {e.Message}");
            throw;
        }
}
"body": "{ \"Message\":\"{ 'from': 'nemesises@live.com','to': 'suhomlin.eugene93@gmail.com', 'subject' : 'test subject', 'data': {'FirstName': 'Eugene', 'LastName': 'Sukhomlyn'},'attachments': ['https://data.dev.playter.co/client_logos/ff9ec9c7-0e9b-4ce3-88a8-0a31c79d9d4a.jpg']}\"}"