When event has data that's a not-nil, zero length slice, JSON marshalling produces malformed JSON.
POC, this code fails to unmarshall the event:
import (
"log"
ce "github.com/cloudevents/sdk-go/v2"
)
func main() {
ev := ce.NewEvent(ce.VersionV1)
ev.SetDataContentType(ce.ApplicationJSON)
ev.SetType("type")
ev.SetSource("source")
ev.SetID("id")
ev.DataEncoded = []byte{}
if err := ev.Validate(); err != nil {
log.Fatalf("failed to validate event: %s", err)
}
dta, err := ev.MarshalJSON()
if err != nil {
log.Fatalf("failed to marshal event: %s", err)
}
var res ce.Event
err = res.UnmarshalJSON(dta)
if err != nil {
log.Fatalf("failed to unmarshal event: %s", err)
}
}