簡體   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