Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vkApi.Groups.GetMembersAsync выдает ошибку при указанном фильтре или возврате одного значения #1627

Open
1 of 3 tasks
DeveloperSuccess opened this issue Jan 13, 2025 · 3 comments
Assignees
Labels
Ошибка В существующем функционале есть проблема
Milestone

Comments

@DeveloperSuccess
Copy link

При вызове vkApi.Groups.GetMembersAsync с фильтром GroupsMemberFilters.Donut мне должно вернуться одно значение, но вместо этого валится ошибка от Newtonsoft.Json. Я не знаю, дело в том что я вызываю фильтр или нет, я думаю дело в том что идет возврат только одного элемента, потому-что без фильтра мне возвращается 1000 корректно.
Проверял в тесте Api от ВК https://dev.vk.com/ru/method/groups.getMembers и всё корректно.

  1. Target для .NET используемый в проекте: (Официально поддерживаем , .net 4.5, NETStandard2.0) (поставьте 'x' в квадратных скобках)
  • .net 4.5
  • NETStandard2.0
  • другое. Указать строкой ниже.
  1. Класс и метод в котором возникла проблема:
    vkApi.Groups.GetMembersAsync

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

 var members = await _vkApi.Groups.GetMembersAsync(
    new GroupsGetMembersParams() 
    { 
        GroupId = "тут id моей группы",
        Filter = GroupsMemberFilters.Donut
    }, token: cancellationToken);
  1. JSON ответа. Для удобства сбора этих данных подключите логи (https://github.com/vknet/vk/wiki/Logging):
Newtonsoft.Json.JsonReaderException: Error reading JObject from JsonReader. Current JsonReader item is not an object: Integer. Path 'response.items[0]', line 1, position 41.
   at Newtonsoft.Json.Linq.JObject.Load(JsonReader reader, JsonLoadSettings settings)
   at Newtonsoft.Json.Linq.JObject.Load(JsonReader reader)
   at VkNet.Utils.JsonConverter.UserJsonConverter.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.Linq.JToken.ToObject(Type objectType, JsonSerializer jsonSerializer)
   at Newtonsoft.Json.Linq.JToken.ToObject(Type objectType)
   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.GroupsCategory.GetMembers(GroupsGetMembersParams params, Boolean skipAuthorization)
   at VkNet.Categories.GroupsCategory.<>c__DisplayClass4_0.<GetMembersAsync>b__0()
   at System.Threading.Tasks.Task`1.InnerInvoke()
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location ---
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(Thread threadPoolThread, ExecutionContext executionContext, ContextCallback callback, Object state)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
@inyutin-maxim
Copy link
Member

Ну исходя из ошибки ожидался массив а пришел одиночный объект.

  • Вы можете прислать пример ответа в json
  • Вы можете сделать PR с исправлением, и помочь проекту стать лучше
  • Вы можете воспользоваться методом Call и получить отдельный объект

@DeveloperSuccess
Copy link
Author

Пример ответа в json:
{ "response": { "count": 1, "items": [ 55325758 ], "next_from": "" } }

@inyutin-maxim inyutin-maxim added this to the v1.79.0 milestone Jan 17, 2025
@inyutin-maxim inyutin-maxim added the Ошибка В существующем функционале есть проблема label Jan 17, 2025
@inyutin-maxim inyutin-maxim self-assigned this Jan 17, 2025
@ivanmem
Copy link
Contributor

ivanmem commented Jan 19, 2025

Объекты возвращаются, если передать фильтр managers:
Image

Иначе возвращается список id.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Ошибка В существующем функционале есть проблема
Projects
None yet
Development

No branches or pull requests

3 participants