Как вы используете атрибут JSON Schema 'default' в Json.NET?

Если у меня есть схема JSON, которая указывает значение по умолчанию для свойства, например

{
    "type" : "object",
    "properties" : {
        "foo" : { "type" : "string" },
        "bar" : { "type" : "string", "default" : "some text" }
    }
}

... и строка JSON, например

{
    "foo" : "lorem ipsum"
}

... как я могу десериализовать эту строку JSON так, чтобы bar был установлен на "некоторый текст" (значение по умолчанию) вместо null?

Ответ 1

Я прослеживал ссылки в исходном коде Json.NET, и атрибут по умолчанию, по-видимому, разбирался, но не использовался ни для чего. Итак, ответ на мой вопрос: вы не можете использовать его в текущей версии Json.NET.

Ответ 2

В json-схемах свойство "default" - это только метаданные (так как "title" и "description" ), поэтому не предполагается использовать его в качестве резерва значения, если ни один не предоставлен (предполагается, что вы десериализуете объект, используя схема). Это говорит о том, что я лично сделал десериализатор, используя это значение по умолчанию, как резерв, если мы хотим создать экземпляр документа из схемы. Тем не менее это не общий случай.

Ответ 3

При переносе объекта для многих применений, валидации, рендеринга форм, документации и тестирования это решение архитектора о том, когда и как использовать значения по умолчанию, и вы, скорее всего, воспользуетесь значениями по умолчанию. Если вы ищете предварительно упакованный один размер, подходит для любого решения, которое может обрабатывать дополнительные данные и затраты на передачу дублирующих значений по умолчанию, то, возможно, другие методологии схемы имеют лучшую поддержку .NET(xml).