JSON Field

Proporciona mecanismos para almacenar datos JSON en campos de Drupal con varios tipos de campo, widgets y formateadores para editar y mostrar contenido JSON.

json_field
5,048 sites
42
drupal.org
Drupal 9 Drupal 10 Drupal 11

Install

Drupal 11, 10 v8.x-1.7
composer require 'drupal/json_field:8.x-1.7'
Drupal 9 v8.x-1.3
composer require 'drupal/json_field:8.x-1.3'

Overview

JSON Field es un módulo completo que permite el almacenamiento de datos JSON dentro de campos de entidad de Drupal. Proporciona tres tipos de campo distintos optimizados para diferentes backends de base de datos y casos de uso: una opción de almacenamiento basada en texto compatible con todas las bases de datos, y dos opciones de almacenamiento JSON nativo que aprovechan los tipos de columna JSON específicos de la base de datos para MySQL, PostgreSQL, MariaDB y SQLite.

El módulo incluye validación para asegurar que solo se pueda guardar JSON válido, múltiples formateadores de visualización para ver datos JSON, y capacidades de edición mejoradas opcionales a través del widget WYSIWYG de JSON Editor. Se integra perfectamente con Views para mostrar datos JSON en listados, soporta el módulo Feeds para importar contenido JSON, y funciona con el módulo Diff para comparar revisiones de campos JSON.

Para la integración con JSON:API, el módulo puede configurarse con JSON:API Extras para generar JSON sin procesar en lugar de cadenas escapadas, lo que lo hace ideal para implementaciones de Drupal headless y arquitecturas API-first.

Features

  • Tres tipos de campo JSON con diferentes backends de almacenamiento: basado en texto (VARCHAR/TEXT), JSON nativo y JSONB/JSON para almacenamiento optimizado en base de datos
  • Validación automática de JSON para asegurar que solo se puedan guardar datos JSON válidos en los campos
  • Widget de área de texto simple para edición básica de JSON con widget WYSIWYG opcional de JSON Editor para una experiencia de edición mejorada
  • Múltiples formateadores de visualización incluyendo texto plano con biblioteca JSONView opcional y formateador Pretty legible por humanos
  • Integración con Views con manejador especial de campo de datos JSON para exportaciones REST
  • Soporte para validación de JSON Schema al usar el submódulo del widget JSON Editor
  • Integración con el módulo Feeds para importar datos JSON desde fuentes externas
  • Integración con el módulo Diff para comparar revisiones de campos JSON entre versiones de entidades
  • Normalizador de serialización personalizado para salida JSON apropiada en contextos REST y JSON:API
  • Opciones configurables de tamaño de almacenamiento de campo (255 caracteres a 1GB) para almacenamiento basado en texto

Use Cases

Almacenamiento de datos de respuesta de API

Almacena respuestas completas de API de servicios externos en campos JSON para caché, auditoría o procesamiento posterior. Los tipos de campo JSON nativo permiten consultas a nivel de base de datos de los datos almacenados en bases de datos compatibles.

Atributos de contenido flexibles

Añade atributos dinámicos sin esquema a tipos de contenido sin crear campos adicionales. Almacena especificaciones de productos, metadatos de eventos o preferencias de usuario como objetos JSON que pueden variar entre entidades.

Almacenamiento de configuración para funcionalidad personalizada

Almacena datos de configuración complejos para módulos personalizados o integraciones. Usa la validación de JSON Schema en el widget del editor para asegurar que la configuración cumpla con la estructura esperada.

Datos de API para Drupal headless

Proporciona datos JSON estructurados a través de los endpoints REST o JSON:API de Drupal para aplicaciones frontend desacopladas. El normalizador personalizado y la integración con JSON:API Extras aseguran una salida JSON apropiada.

Preparación de datos para migración

Almacena temporalmente datos complejos durante migraciones antes de procesarlos en estructuras finales de Drupal. Los campos JSON pueden contener datos anidados que requerirían múltiples entidades relacionadas en el esquema final.

Almacenamiento de datos de constructor de formularios

Almacena definiciones de formularios, preguntas de encuestas o datos de cuestionarios como JSON. Los modos de editor de árbol y formulario facilitan a los editores de contenido gestionar estructuras de datos anidadas sin escribir JSON sin procesar.

Tips

  • Usa el tipo de campo JSON (texto) para máxima compatibilidad de base de datos; usa tipos JSON nativos solo cuando necesites consultas JSON a nivel de base de datos
  • Configura la opción 'Espacio máximo permitido' apropiadamente para evitar usar más recursos de base de datos de los necesarios
  • El formateador Pretty no requiere bibliotecas externas y es ideal para necesidades simples de visualización JSON
  • Habilita la validación de JSON Schema en el widget del editor para aplicar requisitos de estructura de datos en casos de uso complejos
  • MariaDB almacena JSON en columnas LONGTEXT pero aún soporta operaciones de consulta JSON contra los datos
  • Al usar con exportaciones REST de Views, selecciona el campo con sufijo '(data)' para generar JSON sin procesar en lugar de cadenas

Technical Details

Troubleshooting 6
Los campos JSON muestran cadenas escapadas en respuestas JSON:API

Instala el módulo JSON:API Extras, sobrescribe el tipo de recurso en admin/config/services/jsonapi/resource_types, y selecciona 'JSON Field' como el mejorador para el campo JSON.

La biblioteca JSONView no muestra salida formateada

Asegúrate de que la biblioteca jquery-jsonview esté instalada en /libraries/jquery-jsonview/dist/ con los archivos jquery.jsonview.js y jquery.jsonview.css presentes.

El widget JSON Editor no aparece

Habilita el submódulo JSON Field Widget, instala la biblioteca jsoneditor en /libraries/jsoneditor/dist/, y cambia el widget del campo a 'Editor WYSIWYG específico para JSON' en la configuración de visualización de formularios.

Advertencias de compatibilidad de base de datos en el informe de estado

Verifica que la versión de tu base de datos cumpla con los requisitos mínimos: MySQL 5.7.8+, MariaDB 10.2.7+, PostgreSQL 9.2+, o SQLite 3.26+. Para tipos de campo JSON nativo, la base de datos debe soportar columnas JSON.

Error de validación al guardar campo JSON opcional vacío

Esto se corrigió en la versión 8.x-1.6. Actualiza a la última versión para resolver problemas de validación de esquema con campos no requeridos vacíos.

Problemas de exportación de base de datos del núcleo con columnas JSON

El script de exportación de base de datos del núcleo de Drupal no soporta completamente los tipos de campo JSON. Sigue el progreso en los issues del núcleo #3343634 (META), #3143512 (MySQL/MariaDB), #2472709 (PostgreSQL), y #3325871 (SQLite).

Security Notes 4
  • Los datos JSON se validan antes de guardar para asegurar que solo se pueda almacenar JSON válido
  • El módulo usa el servicio de serialización de Drupal para codificación/decodificación JSON, siguiendo las mejores prácticas de seguridad
  • La validación de JSON Schema (cuando está habilitada) proporciona una capa adicional de verificación de integridad de datos
  • Los permisos a nivel de campo se controlan a través de los mecanismos estándar de acceso a campos de Drupal