Validation is the process of verifying that data is accurate, reliable, and meets certain requirements or constraints. This includes checking the data for completeness, consistency, accuracy, and relevance. Data validation is performed to ensure that the data is fit for its intended purpose and that it can be used effectively and efficiently.
We can use KCL and its vet tools to manually or automatically perform data validation to ensure data consistency.
Use KCL for Validation
In addition to using KCL code to generate configuration formats such as JSON/YAML, KCL also supports format validation of JSON/YAML data. As a configuration language, KCL covers almost all features of OpenAPI.
In KCL, a structure definition can be used to validate configuration data. At the same time, it supports user-defined constraint rules through the check block, and writes validation expressions in the schema to check and validate the attributes defined by the schema. It is very clear and simple to check whether the input JSON/YAML satisfies the corresponding schema structure definition and constraints.
- Install KCL
1. Get the Example
git clone https://github.com/kcl-lang/kcl-lang.io.git/
We can run the following command to show the config.
age > 10, "age must > 10"
In the schema, we can use the
check keyword to write the validation rules of every schema attribute. Each line in the check block corresponds to a conditional expression. When the condition is satisfied, the validation is successful. The conditional expression can be followed by
, "check error message" to indicate the message to be displayed when the check fails.
To sum up, the validation kinds supported in KCL schema are:
|Range||Using comparison operators such as |
|Regex||Using methods such as |
|Length||Using the |
|Enum||Using literal union types|
|Optional/Required||Using optional/required attributes of schema|
|Condition||Using the check if conditional expression|
2. Validate the Data
There is a JSON format file
"message": "This is Alice",
"hc": [1, 2, 3]
Execute the following command:
kcl vet data.json schema.k
KCL is a configuration language that supports data validation through its structure definition and user-defined constraint rules. Validation kinds supported in KCL schema include range, regex, length, enum, optional/required, and condition. To validate data, a schema is defined with validation rules written using the check keyword, and the data is validated using the validation tool or a visualization product built on top of it.
The improvement of KCL validation capabilities will gradually focus on the "static" aspect, that is, at compile time, combined with the ability of formal validation, it can directly analyze whether the data meets the constraints, whether the constraints conflict with each other, etc., and can be exposed in real-time through the IDE.
We also expect that KCL models and constraints can be managed as a package (this package has only KCL files). For example, the Kubernetes models and constraints can be used out of the box. Users can generate configurations or verify existing configurations, and can simply extend the models and constraints users want through KCL inheritance.