2017-03-05 2 views
0

속성 값이 지정된 값과 다른 값을 가질 때이를 수정하려고합니다.Ajv로 잘못된 JSON 값을 수정했습니다.

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

나는 기본적으로 좋은 하나에 값을 변경하는 데 사용할 수있는 다른 키워드가 있는가, 또는하여 다른 값으로 참고?

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" } 

답변

2

사용자 정의 키워드로 해결