sdk-go icon indicating copy to clipboard operation
sdk-go copied to clipboard

JSON marshalling produces invalid JSON when data is a zero length slice

Open canni opened this issue 3 months ago • 3 comments

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)
	}
}

canni avatar Sep 24 '25 10:09 canni