2012-04-09 16 views
2

ich eine einfache JSON-String haben, die eine Sammlung von Objekten enthält http://sandapps.com/InAppAds/ads.json.txtServiceStack: Deserialisieren eine Sammlung von JSON-Objekte

Als ich GetAsync aufrufen, um die Objekte zu erhalten, die Sammlung gibt 1 Element anstelle von 4 und es ist leer:

new JsonServiceClient().GetAsync<List<CrossSell>> (url, Success, Failure); 

Meine Klasse ist einfach:

class CrossSell 
{ 
    public string ID { get; set; } 
    public string AppCategory { get; set; } 
    public string AppID { get; set; } 
    public string Name { get; set; }  
    public string ImageUrl { get; set; }  
    public string Copy { get; set; }  
    public string Device { get; set; } 
    public string Link { get; set; }  
} 

Antwort

3

Die JSON nimmt sie eine Antwort DTO mag:

class CrossSellResponse { 
    List<CrossSell> CrossSells { get; set; } 
} 

new JsonServiceClient().GetAsync<CrossSellResponse> (url, Success, Failure); 

und nicht ein bloßes Array als C# Beispiel zeigt:

new JsonServiceClient().GetAsync<List<CrossSell>> (url, Success, Failure); 
+0

Ha, du hast mich auf die Antwort geschlagen, ich habe deine Antwort gutgeschrieben. –

0

ich die Antwort gefunden. Sie müssen eine Wrapper-Gesamtklasse erstellen, die die JSON-Antwort enthält. Ich nenne meine CrossSellResponse

public class CrossSellResponse 
{ 
    public List< CrossSell> CrossSells {get; set;} 
} 

Die Klasse CrossSell die Daten in der Sammlung definiert und entspricht die Feldnamen in einem Fall, sensible Art und Weise. Der Name der Antwort-Nutzlasteigenschaft CrossSells stimmt mit dem Namen der Sammlung im JSON-Stream überein.

Verwandte Themen