Я создать класс для десериализации this JSONDeserealization не работает должным образом
public class Self
{
public string href { get; set; }
}
public class Team
{
public string href { get; set; }
}
public class Links
{
public Self _self { get; set; }
public Team team { get; set; }
}
public class Player
{
public int id { get; set; }
public string name { get; set; }
public string position { get; set; }
public int jerseyNumber { get; set; }
public string dateOfBirth { get; set; }
public string nationality { get; set; }
public string contractUntil { get; set; }
public string marketValue { get; set; }
}
public class RootObject
{
public Links _links { get; set; }
public int count { get; set; }
public List<Player> players { get; set; }
}
public struct Player_Struct
{
public string id;
public string name;
public string position;
public int jerseyNumber;
public string dateOfBirth;
public string nationality;
public string contractUntil;
public string marketValue;
}
Так что я сделал функцию, чтобы создать HttpRequest и относительный объект:
string requestUrl = teams.link_teams;
string responseText = parser.Request(requestUrl);
var obj = JsonConvert.DeserializeObject<Players.RootObject>(responseText);
Теперь проблема это, что компилятор вернуть это исключение:
Необработанное исключение «Newtonsoft.Json.JsonSerializationException» в Newtonsoft.Js on.dll
Ulerri informazioni: Невозможно десериализовать текущий массив JSON (например, [1,2,3]) в тип «SF_DebugProject.API.Players + Links», потому что для десериализации корректно требуется тип JSON (например, {«name»: «value»}).
Для исправления этой ошибки либо смените JSON на объект JSON (например, {"name": "value"}), либо измените десериализованный тип на массив или тип, реализующий интерфейс коллекции (например, ICollection, IList) как List, который можно десериализовать из массива JSON. JsonArrayAttribute также может быть добавлен к типу, чтобы заставить его десериализоваться из массива JSON.
Путь «_links», строка 1, позиция 11.
Так с починки намеком я попытался исправить ошибку изменить объект в:
List<Players.RootObject> obj = JsonConvert.DeserializeObject<List<Players.RootObject>>(responseText);
, но таким образом, Я не вижу никакого атрибута rootobject, когда я делаю foreach. Что я делаю неправильно?
Где JSON? В сообщении говорится, что форма ввода не соответствует целевым типам. Дезициализация не может изменить форму данных. Если ваш вход содержит массив игроков без каких-либо других данных, вы не можете заставить его стать «RootObject» –
. Json находится здесь: http://api.football-data.org/alpha/teams/19/players В любом случае, с этим объектом я могу увидеть параметр RootObject: var obj = JsonConvert.DeserializeObject (responseText); , но по какой-то странной причине возвращается исключение. –