0
        public List<Movie> getPopularMovies()
    {
        List<Movie> movies = null;
        var client = new HttpClient();
        var task = client.GetAsync(url)
            .ContinueWith((taskwithresponse) =>
            {
                var response = taskwithresponse.Result;
                var jsonString = response.Content.ReadAsStringAsync();
                jsonString.Wait();
                movies = JsonConvert.DeserializeObject<List<Movie>>(jsonString.Result);
            });
        task.Wait();
        return movies;
    }

Json to convert

{
  "page": 1,
  "results": [
    {
      "poster_path": "/xfWac8MTYDxujaxgPVcRD9yZaul.jpg",
      "adult": false,
      "overview": "After his career is destroyed, a brilliant but arrogant surgeon gets a new lease on life when a sorcerer takes him under his wing and trains him to defend the world against evil.",
      "release_date": "2016-10-25",
      "genre_ids": [
        28,
        12,
        14,
        878
      ],
      "id": 284052,
      "original_title": "Doctor Strange",
      "original_language": "en",
      "title": "Doctor Strange",
      "backdrop_path": "/hETu6AxKsWAS42tw8eXgLUgn4Lo.jpg",
      "popularity": 55.113822,
      "vote_count": 598,
      "video": false,
      "vote_average": 6.99
    }
  ],
  "total_results": 19676,
  "total_pages": 984
}

I'd like to set movies as results array. My solution (what I found here) is about setting movies as the whole json (pagem results, total_results, total_pages). In fact the json answer is a single object.

How to get deeply inside this json (while converting) to set the List<Movie> movies to results array?

1 Answer 1

2

Create a class for the entire response, with a list of movies on it.

response = JsonConvert.DeserializeObject<JsonResponse>(jsonString.Result);
movies = response.Movies;

Example classes:

public class JsonResponse {

   [JsonProperty("results")]
   public List<Movie> Movies { get; set; }

   [JsonProperty("page")]
   public int Page { get; set; }

   [JsonProperty("total_results")]
   public int TotalResults { get; set; }

   [JsonProperty("total_pages")]
   public int TotalPages { get; set; }

}

public class Movie
{
    [JsonProperty("poster_path")]
    public string PosterPath { get; set; }

    [JsonProperty("adult")]
    public bool Adule { get; set; }

    [JsonProperty("overview")]
    public string Overview { get; set; }

    [JsonProperty("release_date")]
    public string ReleaseDate { get; set; }

    [JsonProperty("genre_ids")]
    public List<int> GenreIds { get; set; }

    [JsonProperty("id")]
    public int Id { get; set; }

    [JsonProperty("original_title")]
    public string OriginalTitle { get; set; }

    [JsonProperty("original_language")]
    public string OriginalLanguage { get; set; }

    [JsonProperty("title")]
    public string Title { get; set; }

    [JsonProperty("backdrop_path")]
    public string BackdropPath { get; set; }

    [JsonProperty("popularity")]
    public double Popularity { get; set; }

    [JsonProperty("vote_count")]
    public int VoteCount { get; set; }

    [JsonProperty("video")]
    public bool Video { get; set; }

    [JsonProperty("vote_average")]
    public double VoteAverage { get; set; }
}
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.