Ich verwende NJsonSchema v2.6 für das JSON-Schema für die folgende Klasse zu erzeugen:Wie kann sichergestellt werden, dass NJsonSchema nur die erforderlichen Felder enthält?
[DataContract(Name = "Message", Namespace = "")]
public class AMessageModel
{
[DataMember]
internal Guid MessageId { get; set; }
internal DateTime MessageDate { get; set; }
}
[DataContract(Name = "Message", Namespace = "")]
public class AddUserMessage : AMessageModel
{
[DataMember]
public string AccountName { get; set; }
[DataMember]
public string FistName { get; set; }
[Range(2, 5)]
[DataMember]
public string LastName { get; set; }
[DataMember]
public string Email { get; set; }
[DataMember]
public string Password { get; set; }
}
Das erzeugte JSON Schema:
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"typeName": "AddFitnessHubAccountMessage",
"additionalProperties": false,
"properties": {
"AccountName": {
"type": [
"null",
"string"
]
},
"FistName": {
"type": [
"null",
"string"
]
},
"LastName": {
"type": [
"null",
"string"
]
},
"Email": {
"type": [
"null",
"string"
]
},
"Password": {
"type": [
"null",
"string"
]
}
},
"allOf": [
{
"type": "object",
"typeName": "AMessageModel",
"additionalProperties": false,
"properties": {
"MessageId": {
"type": "string",
"format": "guid"
},
"MessageDate": {
"type": "string",
"format": "date-time"
}
}
}
]
}
Auch wenn die MessageDate Eigenschaft nicht als Datamember markiert , es ist immer im Schema enthält, auch das generierte Schema enthält zwei Pfade Schema, wenn es nur einen umfassen soll, so scheint es, dass der Parser nicht die Eigenschaften flacht.
UPDATE
dies das Problem mit mehreren Schema Pfade fixiert werden
erstelltnew JsonSchemaGeneratorSettings
{
FlattenInheritanceHierarchy = true
}
GitHub Ausgabe: https://github.com/NJsonSchema/NJsonSchema/issues/53
Dies ist ein Fehler in der aktuellen Implementierung ... Ill fix, dass bald –