2012-04-09 35 views
0

我處理一個REST的服務,取決於給它(這是一個搜索服務)的信息,還給與任何字符串元素或字符串元素的列表元素。一個例子可能是搜索零個或多個圖像的項目 - 保存爲url字符串。我model包含以下屬性來對付我的例子:DataContractJsonSerializer如何在WP7上運行?

private List<string> _Images = new List<string>(); 
[DataMember(Name="images", IsRequired=false)] 
public List<string> Images 
{ 
    get 
    { 
     return _Images; 
    } 
    set 
    { 
     _Images = value; 
     onPropertyChanged("Images"); 
    } 
} 

樣品JSON幾個圖片:

{ 
    "id": 24955, 
    "title": "Conan the Barbarian", 
    "duration": 105, 
    "hd": false, 
    "trailer": "800/BM_6305_800_tr.wmv", 
    "images": [ 
     "http://website.com/images/conanthebar_1.jpg", 
     "http://website.com/images/conanthebar_2.jpg", 
     "http://website.com/images/conanthebar_3.jpg", 
     "http://website.com/images/conanthebar_4.jpg", 
     "http://website.com/images/conanthebar_5.jpg", 
     "http://website.com/images/conanthebar_6.jpg" 
    ] 
} 

樣品JSON一個形象:

{ 
    "id": 24955, 
    "title": "Conan the Barbarian", 
    "duration": 105, 
    "hd": false, 
    "trailer": "800/BM_6305_800_tr.wmv", 
    "images": "http://website.com/images/conanthebar_6.jpg" 
} 

現在,我的問題是, ,當我使用DataContractJsonSerializer時,這將如何處理?如果我傳入的json的圖像字符串是單個字符串(與數組/字符串列表進行比較),它會將其轉換爲只有一個成員的字符串列表嗎?


最後,如果情況不是這樣(我的理論是錯誤的),那麼這種情況怎麼處理呢?

+0

你有一些例子JSON來說明你的問題嗎? – 2012-04-09 20:43:55

回答

0

克里斯,如果DataContractJsonSerializer期待一個數組或字符串的任何IEnumerable的,它實際上將期望的格式如下東西:

[ 「STR1」, 「STR2」, 「STR3」,...]

如果只接收一個字符串,象下面這樣:

「STR1」

它實際上將拋出一個異常。它不會自動將其轉換爲數組,並且沒有辦法。你有

一個解決辦法,但是,如果你申報的「影像」是System.Object類型。如果你這樣做,序列化將工作相同。反序列化將按照你想要的方式工作 - 如果遇到一個數組,它將反序列化爲一個字符串數組,如果它遇到一個字符串,它將反序列化爲一個System.string。