2012-01-20 72 views
4

我使用RestSharp/JSON.NET去跟它返回一個像這樣的集合的API:反序列化的自定義陣列RestSharp/JSON.NET

{ 
    "count": 100, 
    "0": 
    { 
     "title":"some title" 
    }, 
    "1": 
    { 
     "title":"some title" 
    }, 
    .... 
} 

,而不是通常的格式:

{ 
    "count": 100, 
    "items": 
    [ 
     { 
      "title":"some title" 
     }, 
     { 
      "title":"some title" 
     }, 
     .... 
    ] 
} 

是否有一種直接的方式讓RestSharp/JSON.NET正確解析第一個示例,即將數據放入我的反序列化對象的Item []數組屬性中?

我需要編寫一個自定義的解串器嗎?

回答

0

您是否有對API的控制權?你可以改變它嗎?你得到這些物品的方式對我來說似乎很奇怪。你沒有獲得對象的集合,而是獲得相同類型的單獨對象。我的意思是,你的BO是這樣的映射,你做了什麼:

class YourBO 
    { 
     int count; 
     YourProperty prop0; 
     YourProperty prop1; 
     ... 
    } 

非但沒有屬性的集合,因爲它會與你的第二個例子:

class YourBO 
    { 
     int count; 
     IEnumerable<YourProperty> props; 
    } 

所以,除非你有一個有限的和已知數量的項目,你正在得到的JSON的設計沒有意義

0

該集合不遵守通常的JSON格式,所以需要某種類型的JSON網絡覆蓋。你也許可以編寫一個json net自定義轉換器Custom Conveter,然後你就可以把它轉換成RestSharp。

或者你可以把整個對象作爲一個JObject,它至少會給你一個可以循環並轉換爲列表的對象。

雖然它本質上是一個自定義的同樣的事情,解串器,你只需把它變成一個非常通用的對象首先從那裏走,比用繩子更好的工作:)