Как установить для параметра AllowAdditionalProperties значение true при создании схемы с помощью NJsonSchema?C#

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

Сообщение Anonymous »

Теперь мы собираемся использовать NJsonSchema для проверки файлов Json только на наличие обязательных полей и позволяем пользователю добавлять некоторые дополнительные поля для локального использования. Таким образом, он должен разрешить дополнительные свойства в файле Json.

При использовании NJsonSchma есть настройка дополнительных свойств, но когда мы создаем схему с помощью FromType, а затем устанавливаем параметр AllowAdditionalProperties, он будет применяться только к верхнему уровню.

Например:

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

NJsonSchema.JsonSchema4 schema = JsonSchema4.FromType();
schema.AllowAdditionalProperties = true;

public class Item
{
public string code { get; set; }
public string name { get; set; }
}

public class Top
{
public List data { get; set; }
}
Теперь он позволяет использовать дополнительные свойства для Top, но не для Item.
т.е.

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

// allowed even ref is not defined in Top
var js = "{\"data\":[{\"code\":\"A01\",\"name\":\"apple\"}],\"ref\":\"A01\"}";

// ArrayItemNotValid as price is not defined in Item
var js = "{\"data\":[{\"code\":\"A01\",\"name\":\"apple\",\"price\":1.0}],\"ref\":\"A01\"}";
Мы даже пытаемся создать итерирующую функцию для установки значения в словаре свойств, но она по-прежнему не может изменить поведение:

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

public static void SetAditionalProperties(JsonProperty jp)
{
jp.AllowAdditionalProperties = true;
foreach (KeyValuePair kv in jp.Properties)
{
SetAditionalProperties(kv.Value);
}
}
Единственное, что мы можем сделать сейчас, — это загрузить исходный код и изменить метод получения AllowAdditionalProperties, чтобы он всегда возвращал true. Конечно, мы знаем, что это неправильный способ, но на данный момент мы не можем найти альтернативы, и мы хотели бы использовать правильный способ позже, если таковой имеется.

Кажется, что это просто настройка по умолчанию при создании схемы, но мы не можем найти такую ​​опцию (возможно, мы пропустили), кто-нибудь знает, как мы можем изменить эту настройку при создании схемы?

Подробнее здесь: https://stackoverflow.com/questions/388 ... schema-wit
Ответить

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

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

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

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

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