我一直在努力解决这个问题很长一段时间,但无法解决。 我有以下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。有什么问题?
答案 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": ... }]
}