【问题标题】:Deserialize json c# with CRM 365 API使用 CRM 365 API 反序列化 json c#
【发布时间】:2018-11-02 04:28:20
【问题描述】:

所以,我做了这样的课程:

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

它返回空值。 查不出原因

谢谢

【问题讨论】:

  • Json 格式是否正确?我遇到过几次,根据返回结果的方式,对象可能不会用逗号分隔,这会破坏反序列化。

标签: c# asp.net .net dynamic crm


【解决方案1】:

您的类字段与原始 json 字段略有不同,因此如果您想使用它,您需要将属性放入您的字段以提供正确的 json 字段,即

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

有关更多详细信息,请参阅文档article

【讨论】:

    【解决方案2】:

    你在 Class Values 中声明了public List&lt;ContactsDeserialize&gt; keyValues { get; set; },但是你的 json 节点是 value。

    【讨论】:

    • 结果返回两个对象,keyValues和odata_context。包含哪些值。
    • 我的意思是变量命名为“keyValues”,但是json relative的节点命名为value。我想知道当名称不一样时,json如何反序列化。
    【解决方案3】:

    可能是您需要在构造函数中初始化 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 中的返回方式略有不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-06
      • 1970-01-01
      • 2011-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多