go-kratos/kratos · error

failed to unmarshal, message is %T, want proto.Message

Error message

failed to unmarshal, message is %T, want proto.Message

What it means

Error "failed to unmarshal, message is %T, want proto.Message" thrown in go-kratos/kratos.

Source

Thrown at encoding/protojson/protojson.go:47

// codec is a Codec implementation with protojson.
type codec struct{}

func (codec) Marshal(v any) ([]byte, error) {
	m, ok := v.(proto.Message)
	if !ok {
		return nil, fmt.Errorf("failed to marshal, message is %T, want proto.Message", v)
	}
	return MarshalOptions.Marshal(m)
}

func (codec) Unmarshal(data []byte, v any) error {
	if len(data) == 0 {
		return nil
	}
	m, ok := v.(proto.Message)
	if !ok {
		return fmt.Errorf("failed to unmarshal, message is %T, want proto.Message", v)
	}
	return UnmarshalOptions.Unmarshal(data, m)
}

func (codec) Name() string {
	return Name
}

View on GitHub (pinned to 668db92c2c)

When it happens

Trigger: Thrown at encoding/protojson/protojson.go:47 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of go-kratos/kratos@668db92c2c (2026-08-16). Data as JSON: /api/errors/cf2a0a54df84dd28. Report an issue: GitHub.