Десериализовать json c # с помощью CRM 365 API - PullRequest
0 голосов
/ 23 мая 2018

I have a JSON string of this format:

Итак, я создал такие классы:

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);

это возвращает ноль.Не могу узнать причину

Спасибо

Ответы [ 3 ]

0 голосов
/ 23 мая 2018

Вы объявляете public List<ContactsDeserialize> keyValues { get; set; } в значениях класса, но узел вашего json является значением.

0 голосов
/ 23 мая 2018

Возможно, вам нужно инициализировать список 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.

0 голосов
/ 23 мая 2018

Поля вашего класса немного отличаются от исходных полей json, поэтому, если вы хотите использовать это, вам нужно добавить атрибуты в свои поля, чтобы обеспечить правильные поля json, т.е.

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

, для получения более подробной информации см.документация статья

...