其他分享
首页 > 其他分享> > CodeGo.net>无法从Json反序列化获取对象数据

CodeGo.net>无法从Json反序列化获取对象数据

作者:互联网

我正在从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)));

当我在调试器中将其停止时,它将“ res”显示为数据:null和成功:false.

我没有任何错误.它只是不给我Json字符串中的数据.

任何人可以提供任何帮助以找出为什么我没有在“ res”中获取所需数据的帮助,将不胜感激.

谢谢,
托尼

解决方法:

该问题与Response类中的可访问性级别有关.默认情况下,字段,属性和方法是私有的,因此JsonConvert无法填充属性.
更改类,如下所示:

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

它会起作用.
另一个改进与JsonConvert的使用有关.为了避免显式强制转换,请使用以下类型转换:JsonConvert.DeserializeObject< T>(string),其中T为Response

标签:json-deserialization,json,c
来源: https://codeday.me/bug/20191026/1937435.html