@@ -129,7 +129,7 @@ type Schema struct {
129
129
MinProps uint64 `json:"minProperties,omitempty" yaml:"minProperties,omitempty"`
130
130
MaxProps * uint64 `json:"maxProperties,omitempty" yaml:"maxProperties,omitempty"`
131
131
AdditionalProperties AdditionalProperties `json:"additionalProperties,omitempty" yaml:"additionalProperties,omitempty"`
132
- Discriminator any `json:"discriminator,omitempty" yaml:"discriminator,omitempty"`
132
+ Discriminator * Discriminator `json:"discriminator,omitempty" yaml:"discriminator,omitempty"`
133
133
}
134
134
135
135
type Types []string
@@ -1298,33 +1298,7 @@ func (schema *Schema) visitXOFOperations(settings *schemaValidationSettings, val
1298
1298
if v := schema .OneOf ; len (v ) > 0 {
1299
1299
var discriminatorRef string
1300
1300
if schema .Discriminator != nil {
1301
- var discriminator * Discriminator
1302
- if descriminatorValuemap , okcheck := schema .Discriminator .(map [string ]any ); okcheck {
1303
- marshaledDiscriminator , err := json .Marshal (descriminatorValuemap )
1304
- if err != nil {
1305
- return & SchemaError {
1306
- Schema : schema ,
1307
- SchemaField : "discriminator" ,
1308
- Reason : fmt .Sprintf ("unable to marshal the discriminator field in schema: %v" , err ),
1309
- }, false
1310
- }
1311
-
1312
- if err := json .Unmarshal (marshaledDiscriminator , & discriminator ); err != nil {
1313
- return & SchemaError {
1314
- Schema : schema ,
1315
- SchemaField : "discriminator" ,
1316
- Reason : fmt .Sprintf ("unable to unmarshall the discriminator field in schema: %v" , err ),
1317
- }, false
1318
- }
1319
- } else {
1320
- return & SchemaError {
1321
- Schema : schema ,
1322
- SchemaField : "discriminator" ,
1323
- Reason : fmt .Sprintf ("discriminator is expected to be an object, but received an unknown type" ),
1324
- }, false
1325
- }
1326
-
1327
- pn := discriminator .PropertyName
1301
+ pn := schema .Discriminator .PropertyName
1328
1302
if valuemap , okcheck := value .(map [string ]any ); okcheck {
1329
1303
discriminatorVal , okcheck := valuemap [pn ]
1330
1304
if ! okcheck {
@@ -1345,7 +1319,7 @@ func (schema *Schema) visitXOFOperations(settings *schemaValidationSettings, val
1345
1319
}, false
1346
1320
}
1347
1321
1348
- if discriminatorRef , okcheck = discriminator . Mapping [discriminatorValString ]; len (discriminator .Mapping ) > 0 && ! okcheck {
1322
+ if discriminatorRef , okcheck = schema . Discriminator . Mapping [discriminatorValString ]; len (schema . Discriminator .Mapping ) > 0 && ! okcheck {
1349
1323
return & SchemaError {
1350
1324
Value : discriminatorVal ,
1351
1325
Schema : schema ,
0 commit comments