Как убедиться, что NJsonSchema включает только обязательные поля?C#

Место общения программистов C#
Ответить
Anonymous
 Как убедиться, что NJsonSchema включает только обязательные поля?

Сообщение Anonymous »

Я использую NJsonSchema v2.6 для создания схемы JSON для следующего класса:

Код: Выделить всё

[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; }
}
Сгенерированная схема JSON:

Код: Выделить всё

        {
"$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"
}
}
}
]
}
Несмотря на то, что свойство MessageDate не помечено как DataMember, оно всегда включается в схему. Кроме того, сгенерированная схема включает два пути схемы, хотя она должна включать только один, похоже, что синтаксический анализатор не выравнивает свойства.

ОБНОВЛЕНИЕ

Это исправлена ​​проблема с созданием нескольких путей к схеме

Код: Выделить всё

new JsonSchemaGeneratorSettings
{
FlattenInheritanceHierarchy = true
}
Проблема GitHub: https://github.com/NJsonSchema/NJsonSchema/issues/53

Подробнее здесь: https://stackoverflow.com/questions/367 ... red-fields
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»