Skip to main content

Use Validators for Structured Data (JSON) Validation

Each validator can be applied to a specific field in the structured data. For example, if you have a structured data object like this:

data = {
"name": "John Doe",
"email": "john@doe.com"
}

You can independently validate the name and email fields using the Name and Email validators, respectively, as well as the entire data object.

Install the Validator

First, install the validator using the guardrails hub install command. For example, to install the email validator, you can run:

guardrails hub install hub://guardrails/regex_match

Create a Pydantic Model with Validation for the Structured Data

First, create a Pydantic model for the structured data. The example below creates a Pydantic model for the data object above. In order to add the RegexMatch validator to the name and email fields, you can use the Field class from Pydantic and pass the validators argument to it.

from pydantic import BaseModel
from guardrails.hub import RegexMatch

NAME_REGEX = "^[A-Z][a-z]+\s[A-Z][a-z]+$"
EMAIL_REGEX = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$"


class Data(BaseModel):
name: str = Field(validators=[RegexMatch(regex=NAME_REGEX)])
email: str = Field(validators=[RegexMatch(regex=EMAIL_REGEX)])

Create a Pydantic Guard

Create a Pydantic Guard object and pass the Data model to it.

from guardrails import Guard

guard = Guard.from_pydantic(Data)

Validate the Structured Data

You can now validate the structured data using the guard object. For example:

data = {
"name": "John Doe",
"email": "john@doe.com"
}


guard.validate(data)