Мне нужно ее маршалить в json вида {"@type": "myType", ...other fields...}
то есть инжектить на стадии маршалинга поле @type с заданным значением. Учитывая что в полях могут быть подобные же структуры, куда тоже надо инжектить тип, надо реализовать кастомным маршалером. Но самый просто вариант - смаршалить структуру, а потом в полученные байты запихнуть еще одно поле - не работает, т.к. кастомный маршалер логично вызывается циклически.
Есть какое-то простое решение, которое мне на ум не пришло? (под простым решением я не имею в виду вручную маршалить всю структуру)
Возможно так можно обойти, но это слегка колдунство. https://play.golang.org/p/lyz4Aq2GlUb
а просто включить свою структуру в структу с полем типа?
у меня сложилось впечатление, что тебе нужно просто парсить json в функциональном стиле, согласно концепции JsonValue - типа-суммы, в который укладывается любое json значение. type Json = JString of string | JNumber of float | JBool of bool | JNull | JList of Json list | JObject of Map<string, Json> Я не знаю какая либа в голанге это делает, но думаю что-то есть. Вот примерно такая (elm) https://package.elm-lang.org/packages/1602/json-value/latest/Json-Value
либо тупо брать значения без проверки типа с помощью https://github.com/valyala/fastjson
Обсуждают сегодня