0

我已经为这个问题苦苦挣扎了很长一段时间,但无法解决。我有以下 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 对象仍然为空。怎么了?

4

2 回答 2

2

好的,所以有几个问题:

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

您的列表属性上没有 DataMember 属性,它需要匹配数组值的名称,即“搜索”。

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

于 2012-12-14T18:23:02.137 回答
1

尝试

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

由于您的 json 似乎是这种格式:

{
  "Search": [ { "Title": ... }]
}
于 2012-12-14T18:17:43.877 回答