Gridview не заполняется после десериализации JSON - PullRequest
0 голосов
/ 22 января 2019

Я разрабатываю веб-приложение для школьного проекта, использующего C # и веб-сервисы. В школьном материале был указан код, который, как я думал, сработает для моего кода, но он не дает результатов.

Это часть JSON из API:

{
   "id": 550,
   "overview": "A ticking-time-bomb insomniac and a slippery soap salesman channel primal male aggression into a shocking 

   "title": "Fight Club",
}

Я использую API из TMDB для заполнения вида сетки или списка. Я попробовал использовать код, который дал мой scl, и изменил его в соответствии с моими требованиями. но это не работает. Когда я был в режиме отладки, я мог просматривать данные JSON. но данные не связываются с movielist.

public class movies

 {
   public string title { get; set; }
   public string overview { get; set; }
   public int id { get; set; }


 }

public class movielist
{
  public int resultCount;
   public movies[] movielists;
  // public List<movies> movieslists { get; set; } //just tried this
}

protected void Page_Load(object sender, EventArgs e)
{
    var webRequest = (HttpWebRequest)WebRequest.Create("https://api.themoviedb.org/3/trending/movie/week?api_key={api key}");
    var webResponse = (HttpWebResponse)webRequest.GetResponse();
    if (webResponse.StatusCode == HttpStatusCode.OK)
    {
        JavaScriptSerializer json = new JavaScriptSerializer();
        StreamReader sr = new StreamReader(webResponse.GetResponseStream());
        string resString = sr.ReadToEnd();//there is JSON here
        movielist list = json.Deserialize<movielist>(resString);// is always null istead of the JSON

        GridView1.DataSource = list.movielists;
        GridView1.DataBind();

    }
    else
    {
        errortxt.Text = "invalid";
    }
}

ожидаемый вывод для заполнения GridView1 данными, которые были получены. Movielist становится нулевым вместо заполнения. В ResString есть JSON, который я могу открыть.

1 Ответ

0 голосов
/ 22 января 2019

Когда десерлизатор Json возвращает ноль, это потому, что Json не соответствует модели в вашем коде. Это может быть связано с чувствительностью к регистру или несколькими другими причинами.

Вы можете исправить следующим образом:

  1. Скопируйте текст Json в буфер обмена.
  2. В Visual Studio выберите «Правка» -> «Специальная вставка» -> «Вставить JSON как классы».
  3. Десериализация с использованием типа в автоматически сгенерированном.

Ваш объект теперь должен десериализоваться правильно.

В общем, вы должны иметь возможность переименовать корневой объект автоматически сгенерированного класса по своему вкусу

Однако для изменения чего-либо еще в автоматически сгенерированном коде потребуется использовать пользовательские атрибуты custom десериализатор или , чтобы переопределить настройки для определенных элементов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...