www json api ответ на строку - PullRequest
0 голосов
/ 22 марта 2019

Я работаю над приложением в unity3d, которое использует API-интерфейс tmdb для приложения, которое позволяет пользователю искать фильм и затем отображать его в текстовой области, проблема, с которой я сталкиваюсь, заключается в том, что данные выбираютсяв формате JSON, и я очень запутался, поскольку в Интернете есть способы его анализа, но ни один из них не использует объект запроса www, вместо этого он читает файл и затем передает его в строку. Спасибо!

code

1 Ответ

0 голосов
/ 25 марта 2019

Прежде всего, вам нужно написать класс для сериализации ответного объекта json.

В этом случае этот API возвращает json следующим образом:

{
  "page": int,
  "total_results": int,
  "total_pages": int,
  "results": [
    {
      "vote_count": int,
      "id": int,
      "video": bool,
      "vote_average": float,
      "title": string,
      "popularity": double,
      "poster_path": string,
      "original_language": string,
      "original_title": string,
      "genre_ids": [
        int
      ],
      "backdrop_path": string,
      "adult": bool,
      "overview": string,
      "release_date": string
    }
  ]
}

Итак, ваш класс Serializable (es) должен выглядеть следующим образом:

[Serializable]
public class Movies
{
    public int page { get; set; }
    public int total_results { get; set; }
    public int total_pages { get; set; }
    public List<Result> results { get; set; }
}

[Serializable]
public class Result
{
    public int vote_count { get; set; }
    public int id { get; set; }
    public bool video { get; set; }
    public double vote_average { get; set; }
    public string title { get; set; }
    public double popularity { get; set; }
    public string poster_path { get; set; }
    public string original_language { get; set; }
    public string original_title { get; set; }
    public IList<int> genre_ids { get; set; }
    public string backdrop_path { get; set; }
    public bool adult { get; set; }
    public string overview { get; set; }
    public string release_date { get; set; }
}

После этого вы можете легко десериализовать объект json, вот пример кода:

IEnumerator FetchMovies(string movieName)
{
    WWW www = new WWW(url+"search/movie?api_key="+apiKey+"&query="+movieName);

    yield return www;

    if(www.error==null)
    {
        var movies = Newtonsoft.Json.JsonConvert.DeserializeObject<Movies>(www.text);

        foreach(var movie in movies.results)
        {
            Debug.Log("Title " + movie.title);
            Debug.Log("Overview " + movie.overview);
        }
    }
    else
    {
        Debug.LogError(www.error);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...