2017-03-05 1 views
0

Ich versuche, Eigenschaftswerte zu beheben, wenn sie einen anderen Wert als angegeben haben.Fix falsche JSON-Werte mit Ajv

JSON:

{ 
    "stone": "bri" 
} 

Ich mag den Stein Eigenschaft reparieren „Ziegel“ zu haben, wenn es nicht bereits „Ziegel“ ist.

Schema:

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

Mit v4.11.4:

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

Gibt es eine andere Schlüsselwort, das ich im Grunde den Wert zum Guten zu verändern, oder zu einem anderen Wert verwenden können, um durch Referenz?

Antwort

2

mit einem benutzerdefinierten Schlüsselwort Gelöst:

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 
}); 

Und im Schema:

"then": { "modify_current": "brick" }