- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
type asynchronizer struct {
payload interface{}
}
func (as *asynchronizer) MarshalJSON() ([]byte, error) {
insert := []byte("\"async\":true,")
if as.payload == nil {
as.payload = struct{}{}
}
raw, err := json.Marshal(as.payload)
if err != nil {
return raw, err
}
if raw[1] == '}' {
insert = insert[:len(insert)-2]
}
return append(append(raw[0:1], insert...), raw[1:]...), nil
}
raw[0]?
И чем же? Тем, что писать на нём могут даже обезьяны?
Либо делать все запросы одного типа (со всеми возможными полями...) и потом пытаться угадать, какой именно из них к нам пришел.
Ну либо сделать транспортный конвертик: { "async": true, "payload": { ... } }. Хотя такое, наверное, совместимость не позволит...
Можно нагенерировать этих классов, но не хочется.
Это примерно то, что я хотел предложить. Можно сделать что-то подобное
И тогда сериализатор выведет ровно то, что требуется в топике.
Это так ужасно? На другом конце парсер писали индусы, которые не читают значение async'а, а смотрят только на его наличие?
LexicalCast, однако.
слышь, мужик, че под шляпой прячешь? Да вот шустрика поймал. Мент-давай показывай, что за шустрик. М.-не не могу - убежит опять и так еле поймал.мент-ну давай ты на счет 3 приподнимаешь шляпу,а я его рукой схвачу..Ну давай,мужик приподнимает шляпу..мент хватает его рукой и говорит-нифига себе, какой шустрый аж сквозь пальцы проскальзывает
Ты совсем ебанулся? Хоть как-то базар фильтруй.