ServiceStack:反序列化JSON对象的集合

时间:2012-04-09 19:20:11

标签: json servicestack

我有一个简单的json字符串,其中包含一组对象 http://sandapps.com/InAppAds/ads.json.txt

当我调用GetAsync来获取对象时,该集合返回1个元素而不是4个并且它是空的:

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

我的课很简单:

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

2 个答案:

答案 0 :(得分:3)

JSON假定响应DTO如下:

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

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

而不是像C#示例所暗示的裸阵列:

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

答案 1 :(得分:0)

我找到了答案。您需要创建一个包含JSON响应的整体包装类。我称之为CrossSellResponse

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

CrossSell定义集合中的数据,并以区分大小写的方式匹配字段名称。响应有效内容属性CrossSells的名称与json流中的集合名称匹配。