2016-11-01 10 views
3

WebサーバーからJsonデータを取得していますが、オブジェクトに逆シリアル化しようとするとデータが取得されません。私は、クラスを作成し、これを使用し recommendationJsonの逆シリアル化からオブジェクトデータを取得しない

:私は、このリンクに与えられた勧告からこれらのクラスを作成し

{"success":true,"data":[{"Id":6,"CustomerGuid":"70b390d8-82d5-4bba-aa68-fc8268a1b1ff","UserName":"[email protected]","Email":"[email protected]","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":"[email protected]","Email":"[email protected]","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":"[email protected]","Email":"[email protected]","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":"[email protected]","Email":"[email protected]","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":"[email protected]","Email":"[email protected]","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":"[email protected]","Email":"[email protected]","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}]}]}

:JSON文字列は次のようになりますjson2csharp

応答クラス:

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

Customerクラス:

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文字列をdeserialzieこの文を使用しています:ヌルと成功:偽私は、デバッガでそれを停止するとResponse res = (Response)JsonConvert.DeserializeObject(customerJson, (typeof(Response)));

、それはデータとして「RES」を示しています。

私は間違いをしておりません。 Json文字列のデータを私に与えていないだけです。

誰かが私が「res」で欲しいデータを得られない理由を理解する助けがあれば、喜んで感謝します。

おかげで、 トニー

+1

です。質問を[mcve]に改訂してください.JSONとすべてのコードをフォーマットして最小限にしてください問題を再現できるように完了してください。 –

+2

'Response res = JsonConvert.DeserializeObject (customerJson);' – Equalsk

+0

@Equalsk - あなたのメソッドを試したところ、同じ結果が得られました。私は私の声明を作成するためのガイドとしてこれを使用しました:[http://www.newtonsoft.com/json/help/html/DeserializeObject.htm]。ありがとう。 – Tony

答えて

4

問題は、あなたのResponseクラスでアクセシビリティレベルに関連しています。デフォルトでは、フィールド、プロパティ、およびメソッドはprivateであるため、JsonConvertはプロパティを満たすことができません。
の変更次のようにクラス:

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

そして、それは作品をWIL。
もう1つ改善点は、JsonConvertの使用に関連しています。明示的なキャストを避けるには、このタイプの変換を使用してください:ここでTはResponse

+0

私はあなたのお勧めを試してみましたが、私は同じ結果を得ます。データ:nullおよび成功:false。ご協力いただきありがとうございます。 – Tony

+0

申し訳ありませんが、プロパティを「公開」することを忘れました。それはあなたが推奨するように動作します。私は今、Jsonの文字列からデータを取得しています。ご協力いただきありがとうございます。 – Tony

関連する問題