0

私はかなり長い間この問題に苦しんできましたが、解決できません。次の JSON 文字列があります。

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

文字列は複数回繰り返される可能性があるため、値をリストに格納したいと考えています。これを行うために、次の 2 つのクラスを作成しました。 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 のままです。なにが問題ですか?

4

2 に答える 2

2

さて、いくつかの問題があります:

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

リストプロパティにDataMember属性がなく、配列値の名前である「検索」と一致する必要があります。

編集:私はあなたのコードを使用してこれらすべてをテストしました。また、投稿したJSONの形式が正しくありませんが、貼り付けエラーだと思います。

于 2012-12-14T18:23:02.137 に答える
1

Try

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

Since your json seems to be of this format:

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