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

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

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

41 ответов

3 просмотра

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

Конвертните строку и присвойте встроенному А.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
"Дмитрий, мне кажется у тебя не хватает цели в жиз...

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

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

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

А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
Подскажите, где смотреть результат выполнения программы? Код: ;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, станда...
Егор Анелькин
5
Где в Астане можно купить мясо для шашлыков?
Dancing Іңұқәһүғө
21
Добрый день подскажите пожалуйста может кто то сталкивался с ошибками Sentry 22.10.0 развернутым из helm чарт в Kubernetes? Изначально 3 дня назад очень стало много событий ух...
Tire4 Finist Devops
1
;.686 ;Система команд процессора 686 ;.MODEL FLAT,stdcall ;Модель памяти плоская, стандартный ;вызов процедуры ;option casemap:no...
Егор Анелькин
1
почому оно не работает?
Vi Chapmann ٩( 💢•̀ з•́)و Chapmann
19
всем привет почти закончил курс После него можно писать свою операционку? Какие библиотеки надо использовать и куда дальше копать для изучения
Linus
19
Так а кто может спарсить всех участников чата? Идишники
Magic
18
Карта сайта