Member 14977918 Ответов: 2

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, а параметры, которые я отправлял, чтобы получить данные из веб-сервиса. По сути, я ничего не возвращал.

2 Ответов

Рейтинг:
2

Member 14977918

Как оказалось, мой макет JSON не был неправильным. Я использовал Postman для проверки результата моего веб-сервиса, что мне и нужно, но в своем коде я не передавал необходимые данные для получения результатов, как это было в postman. Как только я починил эту деталь, все остальное сработало как заклинание.


Рейтинг:
2

Member 14977918

Как оказалось, мой макет JSON не был неправильным. Я использовал Postman для проверки результата моего веб-сервиса, что мне и нужно, но в своем коде я не передавал необходимые данные для получения результатов, как это было в postman. Как только я починил эту деталь, все остальное сработало как заклинание.