DataContractJsonSerializer返回null对象

时间:2012-12-14 18:09:42

标签: c# json windows-phone-8

我一直在努力解决这个问题很长一段时间,但无法解决。 我有以下JSON字符串:

 {"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对象保持为null。有什么问题?

2 个答案:

答案 0 :(得分:2)

好的,有几个问题:

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

您的list属性上没有DataMember属性,它需要匹配数组值的名称“Search”。

编辑:我使用您的代码测试了所有这些。您发布的JSON格式也不正确,但我认为这是一个粘贴错误。

答案 1 :(得分:1)

尝试

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

因为你的json似乎是这种格式:

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