VKCOM / vk-java-sdk

Java library for working with VK API
MIT License
294 stars 155 forks source link

message_new: CallbackApi.parse() ожидает структуру json отличную от описанной в схеме #272

Open rurikovich opened 1 year ago

rurikovich commented 1 year ago

приходит json вида: ` { "group_id" : , "type" : "message_new", "event_id" : "", "v" : "5.131", "object" : { "message" : { "date" : 1672387895, "from_id" : , "id" : , "out" : 0, "attachments" : [ ], "conversation_message_id" : , "fwd_messages" : [ ], "important" : false, "is_hidden" : false, "peer_id" : 8342610, "random_id" : 0, "text" : "ывц3к4ас уавау" }, "client_info" : { "button_actions" : [ "text", "vkpay", "open_app", "location", "open_link", "open_photo", "callback", "intent_subscribe", "intent_unsubscribe" ], "keyboard" : true, "inline_keyboard" : true, "carousel" : true, "lang_id" : 0 } } }

`

В sdk парсинг джейсона в класс происходит в 2 этапа: 1) сначала парсим в класс CallbackMessage

`public class CallbackMessage {

@SerializedName("type")
private Events type;

@SerializedName("group_id")
private Integer groupId;

@SerializedName("object")
private JsonObject object;

@SerializedName("secret")
private String secret;

...
}

`

где object с типом JsonObject получает значение:

{ "message" : { "date" : 1672387895, "from_id" : <from_id>, "id" : <id>, "out" : 0, "attachments" : [ ], "conversation_message_id" : <conversation_message_id>, "fwd_messages" : [ ], "important" : false, "is_hidden" : false, "peer_id" : 8342610, "random_id" : 0, "text" : "ывц3к4ас уавау" }, "client_info" : { "button_actions" : [ "text", "vkpay", "open_app", "location", "open_link", "open_photo", "callback", "intent_subscribe", "intent_unsubscribe" ], "keyboard" : true, "inline_keyboard" : true, "carousel" : true, "lang_id" : 0 } }

и имеет структуру

[
  "message" : {...},
   "client_info" : {...}
  ]

2) этап 2 мы пытаемся попарсить

[ "message" : {...}, "client_info" : {...} ]

в класс

` /**

`

и получаем null

тк есть лишний объект "client_info" : {...}