2012-12-14 145 views
0

我一直在努力解決這個問題很長一段時間,並且無法解決它。 我有以下的JSON字符串:DataContractJsonSerializer返回空對象

{"Search":[{"Title":"somestring","Year":"somestring","imdbID":"somestring"}]}, {"Title":"somestring","Year":"somestring","imdbID":"somestring"} etc 

字符串可以多次重複自己,所以我想將值存儲在列表中。爲了做到這一點,我已經創建了以下兩類: 的SuggestionListener類:

[DataContract] 
class SuggestionLister 
{ 
    public List<MovieResults> suggestionlist {get;set;} 
} 

持有我想返回的列表。

而且Movieresults類:

[DataContract] 
class MovieResults 
{ 
    [DataMember] 
    public string Title { get; set; } 
    [DataMember] 
    public string Year { get; set; } 
    [DataMember] 
    public string imdbID { get; set; } 

} 

持有需要被存儲的數據。我試着用下面的代碼反序列化它:

byte[] data = Encoding.UTF8.GetBytes(resp); 
MemoryStream memStream = new MemoryStream(data); 
DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(SuggestionLister)); 
SuggestionLister suggestionMovies = (SuggestionLister)serializer.ReadObject(memStream); 

'resp'變量是JSON字符串。但是,當我嘗試使用此代碼時,suggestMovies對象仍爲空。哪裏不對?

+0

確保你的json是唯一的?它有不同的模式...... –

+0

是的,對不起,格式不正確這裏是一個確切的副本:'{「搜索」:[{「標題」:「起始」,「年」:「2010」 ,「imdbID」:「tt1375666」},{「標題」:「入侵:動畫漫畫」,「年份」:「2010」,「imdbID」:「tt1790736」},{「Title」:「 「,」Year「:」2010「,」imdbID「:」tt1686778「},{」Title「:」WWA:Inception「,」Year「:」2001「,」imdbID「:」tt0311992「},標題「:」初始「,」年「:」2010「,」imdbID「:」tt1695201「}]}' –

回答

2

好了,所以有幾個問題:

[DataContract] 
public class SuggestionLister 
{ 
    [DataMember] 
    public List<MovieResults> Search { get; set; } 
} 

你沒有數據成員屬性,並且它需要匹配「Search」數組值的名稱。

編輯:我用你的代碼測試了所有這些。您發佈的JSON格式也不正確,但我認爲這是一個粘貼錯誤。

+0

謝謝!這與以前關於房產名稱的評論一起工作!感覺有點愚蠢,沒有想到它,抱歉讓你煩惱了! –

+0

沒問題,容易忽略,DataContractJsonSerializer有很多問題。 – Jamie

+0

如果您不想重命名實際屬性,則可以在DataMember屬性中設置名稱。 '[DataMember(Name =「Search」)]' – PKeno

1

嘗試

[DataContract] 
class SuggestionLister 
{ 
    public List<MovieResults> Search {get;set;} 
} 

由於您的JSON似乎是這樣的格式:

{ 
    "Search": [ { "Title": ... }] 
} 
+0

剛剛嘗試過,結果相同。搜索屬性保持爲空。 –

+0

您的問題中的Json字符串是否是您使用的實際字符串?看起來它是畸形的。 –

+0

不,正如我在上面評論中所說的那樣。對不起,這個鏈接的輸出是:http://www.omdbapi.com/?s=Inception –