Saltar al contenido principal

Arrays y objetos

Esta página explica cómo construir datos estructurados de plantilla en 7CG usando:

  • type: "object"
  • type: "array"

Estos tipos de campo son especialmente útiles cuando una plantilla necesita más que unos pocos campos planos de texto.

Ejemplos comunes:

  • listas de equipo o créditos
  • bullet points repetidos
  • horarios
  • bloques agrupados de nombre/título
  • gráficos con varias personas

Cuándo usar un objeto​

Usa un objeto cuando varios valores relacionados pertenezcan juntos.

Casos de uso:

  • un bloque de nombre con line1 y line2
  • un bloque de subtítulo con title, subtitle y tag
  • un bloque de estilo con varios ajustes relacionados

Ejemplo básico de objeto​

"nameBlock": {
"type": "object",
"label": "Name Block",
"properties": {
"line1": {
"type": "string",
"label": "Line 1"
},
"line2": {
"type": "string",
"label": "Line 2"
}
}
}

Lo que ven los usuarios en 7CG​

Un objeto se renderiza como un editor anidado que contiene los campos hijos listados en properties.

Esto da al usuario una sección visible para todo el bloque en lugar de dispersar los campos relacionados por el editor.

Cuándo usar un array​

Usa un array cuando el usuario necesite una lista repetible de elementos.

Casos de uso:

  • bullet points
  • varios oradores
  • nombres de créditos
  • elementos de agenda
  • listas de equipo

Array de strings​

"bulletPoints": {
"type": "array",
"label": "Bullet Points",
"items": {
"type": "string",
"gddType": "single-line"
},
"minItems": 1,
"maxItems": 5
}

Lo que ven los usuarios en 7CG​

Para elementos primitivos como strings o números, los usuarios editan la lista en línea.

Pueden:

  • añadir elementos
  • quitar elementos
  • editar cada elemento directamente en la lista

Si maxItems está definido, el botón de añadir muestra el conteo actual.

Arrays de objetos​

Los arrays de objetos son uno de los patrones estructurados más útiles en 7CG.

Úsalos cuando cada elemento de la lista necesite varios campos.

Casos de uso:

  • entradas de créditos con name y role
  • listas de oradores con name, title y organization
  • entradas de agenda con time, title y location

Ejemplo de créditos​

"team": {
"type": "array",
"label": "Team Members",
"items": {
"type": "object",
"title": "Member",
"properties": {
"name": {
"type": "string",
"label": "Name"
},
"role": {
"type": "string",
"label": "Role"
}
}
}
}

Lo que ven los usuarios en 7CG​

Para arrays de objetos, cada elemento aparece como una entrada de lista con:

  • una vista previa del contenido actual
  • un botón de editar
  • un botón de quitar

Editar abre el elemento en su propio cuadro, lo que mantiene manejables los elementos complejos.

Objetos anidados dentro de arrays​

Puedes combinar objetos y arrays libremente.

Por ejemplo, cada elemento del array puede contener un objeto anidado:

"speakers": {
"type": "array",
"label": "Speakers",
"items": {
"type": "object",
"title": "Speaker",
"properties": {
"identity": {
"type": "object",
"label": "Identity",
"properties": {
"name": {
"type": "string",
"label": "Name"
},
"title": {
"type": "string",
"label": "Title"
}
}
}
}
}
}

Es potente, pero también hace el editor más complejo. Usa el anidamiento cuando ayude a los usuarios a entender la estructura, no solo porque el esquema lo permita.

Propiedades útiles de array​

minItems​

"minItems": 1

Indica que se espera al menos un elemento.

maxItems​

"maxItems": 10

Limita cuántos elementos pueden añadir los usuarios.

uniqueItems​

"uniqueItems": true

Marca la lista como pensada para contener valores únicos.

Útil para la intención del autor, aunque los usuarios deberían probar el comportamiento final en el editor.

Valores por defecto en campos estructurados​

Los valores por defecto son especialmente útiles en arrays y objetos.

Por defecto en objeto​

"nameBlock": {
"type": "object",
"label": "Name Block",
"default": {
"line1": "Jane Smith",
"line2": "Presenter"
},
"properties": {
"line1": {
"type": "string",
"label": "Line 1"
},
"line2": {
"type": "string",
"label": "Line 2"
}
}
}

Por defecto en array​

"bulletPoints": {
"type": "array",
"label": "Bullet Points",
"default": ["Welcome", "Announcements", "Closing Prayer"],
"items": {
"type": "string"
}
}

Los valores por defecto facilitan probar editores estructurados porque los usuarios pueden ver de inmediato cómo se comporta la plantilla con datos realistas.

Buenos patrones​

Patrón: Bloque de nombre de dos líneas​

Usa un objeto.

Por qué:

  • las dos líneas pertenecen juntas
  • los usuarios entienden el bloque como una unidad

Patrón: Lista de bullets​

Usa un array de strings.

Por qué:

  • los usuarios pueden añadir, quitar y reordenar elementos repetidos

Patrón: Rollo de créditos​

Usa un array de objetos.

Por qué:

  • cada fila tiene varios valores
  • los usuarios necesitan una lista repetible de entradas similares

Patrón: Gráfico de varios oradores​

Usa un array de objetos, con cada objeto conteniendo los campos del orador.

Por qué:

  • escala mejor que crear campos fijos speaker1, speaker2, speaker3

Patrones a evitar​

Evita aplanar datos repetidos sin necesidad​

Menos útil:

"person1Name": { "type": "string" },
"person1Role": { "type": "string" },
"person2Name": { "type": "string" },
"person2Role": { "type": "string" }

Mejor:

"team": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"role": { "type": "string" }
}
}
}

Evita anidamiento profundo sin necesidad real​

Si la estructura se vuelve demasiado profunda, el editor se vuelve más difícil de usar.

Prefiere la estructura más simple que aún coincida con el modelo mental del usuario.

Checklist práctica de pruebas​

Al probar arrays y objetos en 7CG, confirma que:

  • las secciones de objeto muestran todos los campos hijos esperados
  • los arrays primitivos permiten añadir/quitar correctamente
  • los arrays de objetos abren su cuadro de edición correctamente
  • las vistas previas de los elementos de objeto son significativas
  • minItems y maxItems se comportan como esperabas
  • los valores por defecto producen datos iniciales útiles

Páginas relacionadas​

Pasos siguientes​