Quantcast
Channel: Json.NET
Viewing all articles
Browse latest Browse all 1767

Commented Unassigned: Schema generation marks properties as required when not marked with System.ComponentModel.DataAnnotations.RequiredAttribute [26028]

$
0
0
Hello,

I am trying to generate a schema for validation using only the attributes in System.ComponentModel.DataAnnotations (i.e. required, key, etc.).

When I generate my schema for types I have defined using JSchemaGenerator properties that are not marked with the Required attribute are still listed as required in the schema that is generated.

I have found no way using the attributed in the DataAnnotations namespace to correct this. The only way I have seen to fix this is to use the JsonProperty to set how default/null handling is defined for the property, which I would rather not do since that ties my entities to JSON.NET and mixes attributes.

The only workaround I have at the moment is the post-process the schema removing properties from the required list that do not have the Required attribute.

```
var schema = SchemaGenerator.Generate(type);

var removeRequireds = (from required in schema.Required
let requiredProperty = type.GetProperty(required)
let requiredAttribute =
(from p in requiredProperty.GetCustomAttributes(typeof(RequiredAttribute), true)
select p).SingleOrDefault()
where requiredAttribute == null
select required).ToList();
foreach (var required in removeRequireds)
{
schema.Required.Remove(required);
}
```

I think that if the schema generator is to support DataAnnotations in a pure way it should recognize that properties not marked with the required attribute are not required, without having to use JSON.NET specific attributes to compensate.

Thanks.
Comments: ** Comment from web user: thebothead **

Moved to https://github.com/JamesNK/Newtonsoft.Json/issues/705


Viewing all articles
Browse latest Browse all 1767


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>