Open jamietanna opened 2 months ago
~Actually maybe this isn't needed, and I may have thought it was needed due to #242~
This may only be needed alongside #242 where a custom MarshalJSON
is needed?
This could alternatively be a new Validator
that handles the generation of
Example (Apache-2.0 licensed) code that's output from oapi-codegen
for the same purpose:
func (a Pong) MarshalJSON() ([]byte, error) {
var err error
object := make(map[string]json.RawMessage)
object["ping"], err = json.Marshal(a.Ping)
if err != nil {
return nil, fmt.Errorf("error marshaling 'ping': %w", err)
}
for fieldName, field := range a.AdditionalProperties {
object[fieldName], err = json.Marshal(field)
if err != nil {
return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err)
}
}
return json.Marshal(object)
}
For the following (OpenAPI):
Pong:
type: object
required:
- ping
properties:
ping:
type: string
example: pong
additionalProperties:
type: string
Alternatively could we conditionally generate a MarshalJSON
method if we detect we have AdditionalProperties
?
(This may also need tweaking for the unmarshalJSON
implementation)
I couldn't seem to see anything around why there may not be a
MarshalJSON
method as well as anUnmarshalJSON
, is that intended?