Tots els exercicis de JSON Schema es deuen validar amb el validador de JSON Schema que preferisques, com per exemple:
Exercicis JSON Schema
Exercici 1: Producte bàsic (objecte, type, required, additionalProperties)
Crea un esquema que valide la informació d’un producte.
L’objecte ha de tindre:
nom(string) obligatoripreu(number) obligatori i ha de serminimum: 0disponible(boolean) opcional
Condicions:
additionalProperties: false
- JSON valid:
{
"nom": "Auriculars",
"preu": 29.99,
"disponible": true
}
Exercici 2: Configuració d’aplicació (enum, opcional i null)
Defineix un esquema que valide la configuració d’una aplicació.
L’objecte ha de contindre:
idioma(string) obligatorimode(string) obligatori i només pot ser"normal"o"dark"(enum)notificacions(boolean) opcionaldescripcio(string o null) opcional (type: ["string","null"])
Condicions:
additionalProperties: false
Exercici 3: Colors amb array i pattern (minItems i hex)
Crea un esquema que valide un objecte amb propietats de color.
L’objecte ha de contindre:
colorPrincipal(string) obligatoritons(array de strings) obligatori i ambminItems: 2hex(string) opcional però si apareix ha de complir este patró:
"pattern": "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$"
Condicions:
additionalProperties: false
Nota: ací el pattern ja obliga a ser un hex correcte, per això no cal posar variants.
Exercici 4: Rànquing (array d’objectes + minItems)
Crea un esquema que valide una llista d’elements (array).
Condicions de la llista:
- Ha de tindre com a mínim 3 elements (
minItems: 3)
Cada element ha de ser un objecte amb:
nom(string) obligatori,minLength: 2puntuacio(integer) obligatori,minimum: 0,maximum: 100
Condicions:
additionalProperties: falsedins de cada objecte
Exercici 5: Usuaris amb reutilització ($ref)
Crea un esquema que valide un objecte amb:
usuaris(array) obligatoriminItems: 2
I cada usuari ha de validar-se amb un subesquema reutilitzable (definitions + $ref) anomenat Usuari, amb:
nom(string) obligatoriemail(string) obligatori amb estepatternsimplificat:
"pattern": "^[^@]+@[^@]+\\.[^@]+$"
Condicions:
additionalProperties: falsedins de cada usuariadditionalProperties: falseen l’objecte principal