Исправьте неправильные значения JSON с помощью Ajv

Я пытаюсь исправить значения свойств, когда они имеют значение, отличное от указанного.

JSON:

{
    "stone": "bri"
}

Я хочу исправить свойство камня, чтобы оно имело «кирпич», если оно еще не «кирпич».

Схема:

{
    "required": [
        "stone"
    ],
    "properties": {
        "stone": {
            "type": "string",
            "if": { 
                "not": {
                    "constant": "brick"
                }
            },
            "then": { "default": "brick" }
        }
    }
}

Использование v4.11.4:

var ajv = new Ajv({ useDefaults: true, v5: true });
require('ajv-keywords')(ajv);

Есть ли какое-либо другое ключевое слово, которое я могу использовать, чтобы в основном изменить значение на хорошее или на другое значение по ссылке?


person Zoltan Szabo    schedule 05.03.2017    source источник


Ответы (1)


Решено с помощью пользовательского ключевого слова:

ajv.addKeyword('modify_current', {
    modifying: true,
    validate: function (schema_parameter_value, validated_parameter_value, validation_schema_object, current_data_path, validated_parameter_object, validated_parameter) {
        validated_parameter_object[validated_parameter] = schema_parameter_value;
        return true;
    },
    errors: false
});

И в схеме:

"then": { "modify_current": "brick" }
person Zoltan Szabo    schedule 13.03.2017