vknet / vk

Vkontakte API for .NET
https://vknet.github.io/vk/
MIT License
568 stars 222 forks source link

Deserialization exception when PollsCategory.GetVoters #1609

Closed naxa1ka closed 8 months ago

naxa1ka commented 8 months ago

Title

Падает экспешен в классе VkCollectionJsonConverter в методе ReadJson при использовании метода PollsCategory.GetVoters на строчке

var totalCount = response[CountField].Value<ulong>();

Description

0. nuget version

1.79.0-alpha-104

1. Target для .NET используемый в проекте:

.net 7.0.

2. Класс и метод в котором возникла проблема:

строка 109 - в классе VkCollectionJsonConverter в методе ReadJson

3. Пример кода для воспроизведения проблемы, пожалуйста указывайте конкретные значения параметров запроса:

            var api = new VkApi();
            api.Authorize(
                new ApiAuthParams
                {
                    ApplicationId = 7988227,
                    Login = "",
                    Password = "",
                    Settings = Settings.All,
                    TwoFactorAuthorization = () =>
                    {
                        Console.WriteLine("Enter Code:");
                        return Console.ReadLine();
                    },
                    ForceSms = true
                }
            );
             var pollsGetVotersParams = new PollsGetVotersParams
            {
                OwnerId = -145005178,
                PollId = 928754744,
                AnswersIds = new List<long>() { 2501159906, 2501159907 },
            };
            var pollAnswerVotersList = api.PollsCategory.GetVoters(pollsGetVotersParams);

4. JSON ответ

Json response ```json { "response": [ { "answer_id": 2501159906, "users": { "count": 60, "items": [ 318635224, 778883494, 94201706, 623350854, 201488398, 213530408, 434528365, 217467544, 311704080, 247818861, 215639484, 66934532, 447883684, 619432159, 254058506, 151870764, 257425714, 295098246, 350472868, 54817590, 238305686, 205425121, 429253967, 447844502, 453500207, 561997370, 194918815, 479187060, 427521444, 193032397, 266230043, 519014563, 170520086, 110523624, 143000777, 220348312, 472684673, 294508579, 366986220, 188342596, 206575863, 229296066, 145777129, 392153898, 312602842, 102304468, 421298985, 504854790, 502775095, 175214268, 171952781, 319997504, 176266488, 512806749, 139403830, 337996293, 251943149, 180493831, 210044998, 628795343 ] } }, { "answer_id": 2501159907, "users": { "count": 87, "items": [ 168465174, 274754699, 306611621, 135598472, 191759022, 521684931, 324136148, 171739713, 200442287, 320036357, 147545346, 175523367, 137423888, 242220494, 256326397, 430378781, 445995892, 233548445, 731203998, 617413957, 94573753, 433750147, 366048147, 301464586, 143520524, 471605790, 161913415, 407063258, 463254275, 387067154, 630966769, 413158803, 144293813, 189123462, 175418693, 265750836, 252748506, 192714066, 257907920, 147834724, 323306622, 503557478, 239667963, 227911949, 215597196, 401622393, 497503979, 325164033, 368533700, 331192219, 120454286, 502763971, 138445466, 174823688, 216573589, 143004393, 342860417, 539544387, 328868093, 294170655, 34477394, 199984489, 280874358, 421912776, 305732877, 160791608, 153607802, 397393793, 383192662, 205835602, 503548267, 35310705, 276256203, 151401740, 251902560, 143394843, 165269567, 261407405, 205981670, 200423347, 311391398, 468732163, 68688528, 197419808, 147513930, 350810139, 58810322 ] } } ] } ```

5. Stack trace

Unhandled exception. System.ArgumentException: Accessed JArray values with invalid key value: "count". Int32 array index expected.
   at Newtonsoft.Json.Linq.JArray.get_Item(Object key)
   at VkNet.Utils.JsonConverter.VkCollectionJsonConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter converter, JsonReader reader, Type objectType, Object existingValue)
   at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)
   at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonSerializer.Deserialize(JsonReader reader, Type objectType)
   at Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)
   at Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)
   at VkNet.VkApi.Call[T](String methodName, VkParameters parameters, Boolean skipAuthorization, JsonConverter[] jsonConverters)
   at VkNet.Categories.PollsCategory.GetVoters(PollsGetVotersParams params)
inyutin-maxim commented 8 months ago

Добавлено к следующему релизу. Либо можете получить обновление из альфа канала: https://www.myget.org/F/vknet