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) obligatori
  • preu (number) obligatori i ha de ser minimum: 0
  • disponible (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) obligatori
  • mode (string) obligatori i només pot ser "normal" o "dark" (enum)
  • notificacions (boolean) opcional
  • descripcio (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) obligatori
  • tons (array de strings) obligatori i amb minItems: 2
  • hex (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: 2
  • puntuacio (integer) obligatori, minimum: 0, maximum: 100

Condicions:

  • additionalProperties: false dins de cada objecte

Exercici 5: Usuaris amb reutilització ($ref)

Crea un esquema que valide un objecte amb:

  • usuaris (array) obligatori
  • minItems: 2

I cada usuari ha de validar-se amb un subesquema reutilitzable (definitions + $ref) anomenat Usuari, amb:

  • nom (string) obligatori
  • email (string) obligatori amb este pattern simplificat:

"pattern": "^[^@]+@[^@]+\\.[^@]+$"

Condicions:

  • additionalProperties: false dins de cada usuari
  • additionalProperties: false en l’objecte principal