繁体   English   中英

使用CRM 365 API反序列化json c#

[英]Deserialize json c# with CRM 365 API

我有以下格式的JSON字符串:

所以,我做了这样的课:

public class Values
{
    public string odata_context { get; set; }
    public List<ContactsDeserialize> keyValues { get; set; }
}
public class ContactsDeserialize : IDisposable
{
    public string odata_etag     { get; set; }
    public Guid contactid        { get; set; }
    public string crimson_title  { get; set; }
    public string firstname      { get; set; }
    public string lastname       { get; set; }
    public DateTime? createdon   { get; set; }
    public DateTime? birthdate   { get; set; }
    public string emailaddress1  { get; set; }
    public string mobilephone    { get; set; }
    public string address1_line1 { get; set; }
    public string address1_line2 { get; set; }
    public string address1_line3 { get; set; }
    public string address1_city  { get; set; }
    public string address1_postalcode { get; set; }
    public string address1_telephone1 { get; set; }
}

但是当我尝试通过使用将其反序列化时

Values ContactData = JsonConvert.DeserializeObject<Values>(jsonstring);

它返回null。 找不到原因

谢谢

您的类字段与原始json字段略有不同,因此,如果要使用此字段,则需要将属性置于字段中以提供正确的json字段,即

[JsonProperty("@odata.etag")]
public string odata_etag { get; set; }

有关更多详细信息,请参见文档文章

可能是您需要在构造函数中初始化keyValues列表。

public class Values
{
    public Values()
    {
         keyValues = new List<ContactsDeserialize>();
    }

    public string odata_context  {get; set; }
    public List<ContactsDeserialize> keyValues { get; set; }
}

除非您在属性中定义映射的对象,否则对象的名称应与json返回的内容完全匹配。 odata_context和keyValues的命名方式与json中返回的方式略有不同。

您声明public List<ContactsDeserialize> keyValues { get; set; } public List<ContactsDeserialize> keyValues { get; set; } public List<ContactsDeserialize> keyValues { get; set; } ,但json的节点是value。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM