Jsonserializationexception: не удается десериализовать текущий массив JSON (например, [1, 2, 3]) В тип 'project1.models.root', поскольку для этого типа требуется объект JSON
Я уже делал это раньше, и обычно мне трудно определить, что не так с моим объектом JSON или моим кодом, но я, кажется, не могу понять, что я делаю не так. Я даже использовал Jsontocharp.com и это дает мне результат, которого я ожидаю.
Вот мой json:
{"user":[{"ID":"12393","userID":"4772","username":"bullyboy","dtDate":"2020-11-02 17:26:54.277}],"actions":[{"actionsID":"23983","actionsName":"Clicked","ObjectName":"Button"},{"actionsID":"23984","actionsName":"Submitted","ObjectName":"Form"} ], "Deleted":[],"Forms":[],"Timestamp":"2020-11-06 13:45:28"}
мой корень-это:
public class Root { public List<Users> user { get; set; } public List<Actions> actions { get; set; } public List<DeletedData> Deleted { get; set; } public List<CMForms> Forms { get; set; } public string Timestamp { get; set; } }
мой десериализатор выглядит следующим образом
response = client.PostAsync(url, params).Result; if(response.StatusCode == HttpStatusCode.OK) { var content = await response.Content.ReadAsStringAsync(); Root jsonList = JsonConvert.DeserializeObject<Root>(content); foreach(var act in jsonList.actions) { Console.WriteLine(act); }
Я получаю сообщение об ошибке, перечисленное выше. Я не уверен, что делаю неправильно. Кстати, пустые списки-это потому, что для этого пользователя ничего не получилось.Я должен принять это во внимание. Если список пуст, я просто пропускаю его, но я даже не могу десериализовать свой список..
Что я уже пробовал:
Я не могу изменить то, что мне представляется, иначе говоря, JSON, поэтому я попытался сделать свой корень в виде списка, и он не дает мне этой комнаты, но это не то, что я хочу, потому что то, что я возвращаю, не является списком.. так ведь? По крайней мере, я рассматриваю его как объект, и внутри этого объекта у меня есть списки.
Gerry Schmitz
Без "корня" в вашем JSON он просто не соответствует тому, что ваш класс "говорит". Оберните вокруг него "корень".
Member 14977918
вы имеете в виду обернуть мой json в корень? Разве он уже не внутри корня? Я попробовал добавить как "корень":{ перед всем этим, и я возвращаю другой корень, который возвращает корень, который имеет все данные внутри моего текущего корня.
Gerry Schmitz
Госпожа рекомендует:
https://docs.microsoft.com/en-us/dotnet/api/system.text.json.jsonserializer?view=netcore-3.1
Member 14977918
Спасибо, я все понял. это был вовсе не may json, а параметры, которые я отправлял, чтобы получить данные из веб-сервиса. По сути, я ничего не возвращал.