170 похожих чатов

Подскажите, кстати, как быть ещё в такой ситуации) Пишу SDK

для работы с одним достаточно кривым API. Там user_id везде идёт как int, а в одном из эндпоинтов - как число в кавычках (строка). Когда мой метод SDK возвращает декодированную структуру, то что должно быть типом этого user_id? json.Number или же нужно делать промежуточную структуру, а потом конвертить в другую структуру, где user_id делать интом?

41 ответов

18 просмотров

Если везде инт, то возвращай везде инт, а в этом одном месте уже сам крутанись как-нибудь...

Конвертните строку и присвойте встроенному А.Id и верните его Где А - ваш тип где айди это инт и который используется повсеместно в остальных местах общения с апи https://play.golang.org/p/TYQ0LNIDHSw

lrrr_lrrr
Конвертните строку и присвойте встроенному А.Id и ...

да проще по моему сразу в структуре тип стринг поставить и через strconv в int бахнуть

Зомби Engineer🧟‍♂️🇷🇸
да проще по моему сразу в структуре тип стринг пос...

Я предлагаю тоже самое но для этого одного уникального роута апи который возвращает строку вместо числа. При этом основной тип с которым будет взаимодействовать пользователь СДК остаётся один и тот же, в данном случае это структура А

Dmitriy-Sviridov Автор вопроса
Dmitriy-Sviridov Автор вопроса
lrrr_lrrr
Конвертните строку и присвойте встроенному А.Id и ...

Я правда не понял, в чём смысл, если честно. Там же тип всё равно string. Да, можно обращаться как b.A.Id, но это ж неудобно... https://play.golang.org/p/Mz7xXCOzV1r

VK API?

Dmitriy-Sviridov Автор вопроса

https://play.golang.org/p/bHad94nEdi0 json.Number подойдет

Dmitriy Sviridov
Я правда не понял, в чём смысл, если честно. Там ж...

вы сказали что во всех случаях там int и в одном строка. Для конкретного случая где строка можно сделать вот такой воркэраунд. Парсить как строку, потом эту строку привести к int и присвоить во внутреннюю структуру в b.A.Id и из метода юзеру вашего СДК вернуть только b.A

Dmitriy-Sviridov Автор вопроса
c
https://play.golang.org/p/bHad94nEdi0 json.Number ...

Так вот и вопрос: а насколько правильно, если мой SDK клиент будет такой тип возвращать? Или правильно конвертацию делать?

Dmitriy-Sviridov Автор вопроса
lrrr_lrrr
вы сказали что во всех случаях там int и в одном с...

Ну там у меня не одно поле надо возвращать, а целую структуру. Получается, надо промежуточную структуру создать, а возвращать другую (где в этом поле int будет)?

Dmitriy Sviridov
Ну там у меня не одно поле надо возвращать, а целу...

так вы и вернете всю структуру. В B у вас только одно поле Id которое затеняет Id во встроенной структуре A, я же специально докинул внутрь А поле Some чтобы показать что плоский json нормально распарсится в поля внутренней структуры если она встроена и только Id будет затенен

Dmitriy-Sviridov Автор вопроса
lrrr_lrrr
так вы и вернете всю структуру. В B у вас только о...

Я понимаю, но ведь пользователи библиотеки, ожидая получить этот id, будут писать b.Id - и будут получать string'овый Id

c
VK API?

я спросил, потому что у ВК, как и у любой поделки на PHP есть проблемы с тем что путаются типы int/float/bool/string и там тоже есть пляски с анмаршалом, чтоб получать нормальные типы на выходе https://sourcegraph.com/search?q=context:global+repo:%5Egithub%5C.com/SevereCloud/vksdk%24+UnmarshalJSON&patternType=literal

Dmitriy Sviridov
Я понимаю, но ведь пользователи библиотеки, ожидая...

он не будет знать ваще о типе B потому что вы вернете ему А, В только как служебный используйте

Dmitriy-Sviridov Автор вопроса
c
я спросил, потому что у ВК, как и у любой поделки ...

Да, я знаю. Это не VK, но там, возможно, тоже php. Ну или NodeJS - фиг знает

Dmitriy Sviridov
Я понимаю, но ведь пользователи библиотеки, ожидая...

вы же можете сделать тип В не экспортируемым чтобы пользователь СДК ваще его не видел

Dmitriy-Sviridov Автор вопроса
lrrr_lrrr
он не будет знать ваще о типе B потому что вы верн...

Сообразил. Спасибо, это прямо то, что нужно

Dmitriy Sviridov
Сообразил. Спасибо, это прямо то, что нужно

Всегда пожалуйста. Вот еще раз с коментами и нормальными именами типов. https://play.golang.org/p/CY_xBGfzSTF

Dmitriy-Sviridov Автор вопроса
lrrr_lrrr
Всегда пожалуйста. Вот еще раз с коментами и норма...

Норм вообще, мне чего-то в голову этот способ не пришёл

Dmitriy Sviridov
Я правда не понял, в чём смысл, если честно. Там ж...

Ты сделай просто, тот сломанный Дженсон пройди по нему как по строке и удали ненужные ковычки, ничего не конвертируя и не создавая паразитных структур.

Dmitriy-Sviridov Автор вопроса
Andrey Panov
Ты сделай просто, тот сломанный Дженсон пройди по ...

Я так кое-где делал (кстати, да, потребуются регулярки) - и это такое себе :)

Dmitriy Sviridov
Я так кое-где делал (кстати, да, потребуются регул...

Ты сделай без регулярок, просто посимвольно пройди. Я предположу что анмаршал может принимать поток символов, а ты в нем просто отфильтруй эти ковычки. Я не знаю в Го можно или нет, но ты прямо по месту замени кавычки на пробелы, точно самое эффективное будет.

Dmitriy-Sviridov Автор вопроса
Andrey Panov
Ты сделай без регулярок, просто посимвольно пройди...

И пусть мне кто-то потом скажет, что в Go нормальная работа с json, ага

Dmitriy Sviridov
И пусть мне кто-то потом скажет, что в Go нормальн...

А причём тут go, если у вас во входных данных черти что

Dmitriy-Sviridov Автор вопроса
Dmitriy Sviridov
И пусть мне кто-то потом скажет, что в Go нормальн...

Сильно сказано Волна критики нахлынет на тебя...

Dmitriy-Sviridov Автор вопроса
Арман Торениязов
Сильно сказано Волна критики нахлынет на тебя...

Ну когда предлагают в строке json убрать кавычки, чтобы строку превратить в число, причём не регуляркой даже, а посимвольно - что я могу на это ответить-то?))

Dmitriy Sviridov
Ну когда предлагают в строке json убрать кавычки, ...

Вам помимо этого решения предложили ещё как минимум два, причём оба нормальные, ничего трансформировать не надо

Dmitriy Sviridov
И пусть мне кто-то потом скажет, что в Go нормальн...

Дмитрий, мне кажется у тебя не хватает цели в жизни. Судя по тому сколько мы мусолим эту тему. Сделай самым простым и надёжным способом, который поймет любой, кто посмотрит на твой код. Сделай тест и ещё напиши автору этого эндпоинта, но это уже потеря времени. Давай, соберись!! :)

Dmitriy-Sviridov Автор вопроса
Владимир Столяров
Вам помимо этого решения предложили ещё как миниму...

Так а кто спорит-то? Я высказался лишь про один из вариантов

Dmitriy-Sviridov Автор вопроса
Andrey Panov
Дмитрий, мне кажется у тебя не хватает цели в жизн...

"Дмитрий, мне кажется у тебя не хватает цели в жизни" - не думаю, что есть смысл переходить на личности

Dmitriy Sviridov
"Дмитрий, мне кажется у тебя не хватает цели в жиз...

Я исключительно из дружеских побуждений. Никого не хочу обидеть.

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта