没有从Json反序列化中获取对象数据

时间:2016-11-01 17:01:16

标签: c# json json-deserialization

我从Web服务器获取Json数据,但是当我尝试将其反序列化为对象时,我没有获得任何数据。 Json字符串如下所示:



{"success":true,"data":[{"Id":6,"CustomerGuid":"70b390d8-82d5-4bba-aa68-fc8268a1b1ff","UserName":"victoria_victoria@nopCommerce.com","Email":"victoria_victoria@nopCommerce.com","CustomerRoles":[{"Id":3,"Name":"Registered","SystemName":"Registered"}],"AdminComment":null,"IsTaxExempt":false,"AffiliateId":0,"VendorId":0,"HasShoppingCartItems":false,"Active":false,"Deleted":false,"IsSystemAccount":false,"SystemName":null,"LastIpAddress":null,"CreatedOnUtc":"\/Date(1472933472393)\/","LastLoginDateUtc":null,"LastActivityDateUtc":"\/Date(1472933472393)\/","ExternalAuthenticationRecords":[],"ShoppingCartItems":[]},{"Id":5,"CustomerGuid":"eb9e6f24-f362-4c10-942a-366e2919dc11","UserName":"brenda_lindgren@nopCommerce.com","Email":"brenda_lindgren@nopCommerce.com","CustomerRoles":[{"Id":3,"Name":"Registered","SystemName":"Registered"}],"AdminComment":null,"IsTaxExempt":false,"AffiliateId":0,"VendorId":0,"HasShoppingCartItems":false,"Active":false,"Deleted":false,"IsSystemAccount":false,"SystemName":null,"LastIpAddress":null,"CreatedOnUtc":"\/Date(1472933472363)\/","LastLoginDateUtc":null,"LastActivityDateUtc":"\/Date(1472933472363)\/","ExternalAuthenticationRecords":[],"ShoppingCartItems":[]},{"Id":4,"CustomerGuid":"9f46dbae-6942-410c-90b8-9b38a0890064","UserName":"james_pan@nopCommerce.com","Email":"james_pan@nopCommerce.com","CustomerRoles":[{"Id":3,"Name":"Registered","SystemName":"Registered"}],"AdminComment":null,"IsTaxExempt":false,"AffiliateId":0,"VendorId":0,"HasShoppingCartItems":false,"Active":false,"Deleted":false,"IsSystemAccount":false,"SystemName":null,"LastIpAddress":null,"CreatedOnUtc":"\/Date(1472933472317)\/","LastLoginDateUtc":null,"LastActivityDateUtc":"\/Date(1472933472317)\/","ExternalAuthenticationRecords":[],"ShoppingCartItems":[]},{"Id":3,"CustomerGuid":"6277386b-13ee-427b-9cfe-4ebfa487c340","UserName":"arthur_holmes@nopCommerce.com","Email":"arthur_holmes@nopCommerce.com","CustomerRoles":[{"Id":3,"Name":"Registered","SystemName":"Registered"}],"AdminComment":null,"IsTaxExempt":false,"AffiliateId":0,"VendorId":0,"HasShoppingCartItems":false,"Active":false,"Deleted":false,"IsSystemAccount":false,"SystemName":null,"LastIpAddress":null,"CreatedOnUtc":"\/Date(1472933472253)\/","LastLoginDateUtc":null,"LastActivityDateUtc":"\/Date(1472933472253)\/","ExternalAuthenticationRecords":[],"ShoppingCartItems":[]},{"Id":2,"CustomerGuid":"241f45f1-b38c-4e22-8c5a-743fa3276620","UserName":"steve_gates@nopCommerce.com","Email":"steve_gates@nopCommerce.com","CustomerRoles":[{"Id":3,"Name":"Registered","SystemName":"Registered"}],"AdminComment":null,"IsTaxExempt":false,"AffiliateId":0,"VendorId":0,"HasShoppingCartItems":false,"Active":false,"Deleted":false,"IsSystemAccount":false,"SystemName":null,"LastIpAddress":null,"CreatedOnUtc":"\/Date(1472933472207)\/","LastLoginDateUtc":null,"LastActivityDateUtc":"\/Date(1472933472207)\/","ExternalAuthenticationRecords":[],"ShoppingCartItems":[]},{"Id":1,"CustomerGuid":"a940dc03-5f52-47d2-9391-8597b3b31cf2","UserName":"tony@lakesideos.com","Email":"tony@lakesideos.com","CustomerRoles":[{"Id":1,"Name":"Administrators","SystemName":"Administrators"},{"Id":2,"Name":"Forum Moderators","SystemName":"ForumModerators"},{"Id":3,"Name":"Registered","SystemName":"Registered"}],"AdminComment":null,"IsTaxExempt":false,"AffiliateId":0,"VendorId":0,"HasShoppingCartItems":true,"Active":true,"Deleted":false,"IsSystemAccount":false,"SystemName":null,"LastIpAddress":"71.185.255.7","CreatedOnUtc":"\/Date(1472933470783)\/","LastLoginDateUtc":"\/Date(1477522483903)\/","LastActivityDateUtc":"\/Date(1477523996553)\/","ExternalAuthenticationRecords":[],"ShoppingCartItems":[{"Id":1,"StoreId":1,"ShoppingCartTypeId":1,"CustomerId":1,"ProductId":18,"AttributesXml":null,"CustomerEnteredPrice":0.0000,"Quantity":1,"CreatedOnUtc":"\/Date(1473801903447)\/","UpdatedOnUtc":"\/Date(1473803336207)\/","IsFreeShipping":false,"IsShipEnabled":true,"AdditionalShippingCharge":0.0000,"IsTaxExempt":false}]}]}




我根据此链接中的建议创建了这些类: recommendation

我用它来创建类:json2csharp

响应类:

class Response
{
    bool success;
    IList<Customer> data;
}

客户类:

class Customer
{
    public int Id { get; set; }
    public string CustomerGuid { get; set; }
    public string UserName { get; set; }
    public string Email { get; set; }
    public List<CustomerRole> CustomerRoles { get; set; }
    public object AdminComment { get; set; }
    public bool IsTaxExempt { get; set; }
    public int AffiliateId { get; set; }
    public int VendorId { get; set; }
    public bool HasShoppingCartItems { get; set; }
    public bool Active { get; set; }
    public bool Deleted { get; set; }
    public bool IsSystemAccount { get; set; }
    public object SystemName { get; set; }
    public string LastIpAddress { get; set; }
    public DateTime CreatedOnUtc { get; set; }
    public DateTime? LastLoginDateUtc { get; set; }
    public DateTime LastActivityDateUtc { get; set; }
    public List<object> ExternalAuthenticationRecords { get; set; }
    public List<object> ShoppingCartItems { get; set; }

}

CustomerRole类:

class CustomerRole
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string SystemName { get; set; }

}

ExternalAuthenticationRecord类:

class ExternalAuthenticationRecord
{
    public int Id { get; set; }
    public int CustomerId { get; set; }
    public string Email { get; set; }
    public object ExternalIdentifier { get; set; }
    public object ExternalDisplayIdentifier { get; set; }
    public object OAuthToken { get; set; }
    public object OAuthAccessToken { get; set; }
    public string ProviderSystemName { get; set; }
}

ShoppingCartItem类:

class ShoppingCartItem
{
    public int Id { get; set; }
    public int StoreId { get; set; }
    public int ShoppingCartTypeId { get; set; }
    public int CustomerId { get; set; }
    public int ProductId { get; set; }
    public object AttributesXml { get; set; }
    public double CustomerEnteredPrice { get; set; }
    public int Quantity { get; set; }
    public DateTime CreatedOnUtc { get; set; }
    public DateTime UpdatedOnUtc { get; set; }
    public bool IsFreeShipping { get; set; }
    public bool IsShipEnabled { get; set; }
    public double AdditionalShippingCharge { get; set; }
    public bool IsTaxExempt { get; set; }

}

我正在使用此语句对Json字符串进行反序列化:Response res = (Response)JsonConvert.DeserializeObject(customerJson, (typeof(Response)));

当我在调试器中停止它时,它会显示&#34; res&#34; as data:null和success:false。

我没有收到任何错误。它只是没有从Json字符串中提供数据。

任何人都可以提供任何帮助,以弄清楚为什么我没有得到我想要的数据&#34; res&#34;,将不胜感激。

谢谢, 贝

1 个答案:

答案 0 :(得分:4)

问题与Response课程中的辅助功能级别有关。默认情况下,fields,property和method是私有的,因此JsonConvert无法填充属性 更改课程如下:

class Response
{
    public bool success {get; set;}
    public IList<Customer> data {get; set;}
}

它会奏效。
另一个改进与JsonConvert的使用有关。要避免显式强制转换,请使用此类型转换:JsonConvert.DeserializeObject<T>(string)其中T将为Response