Listas de objetos
Muchas fuentes de productos contienen datos estructurados: una lista de vídeos con una URL y un nombre, una tabla de tallas, un conjunto de variantes con un precio cada una. Feedr puede trabajar con estos datos como objetos JSON y listas de objetos.
Un objeto JSON es un conjunto de atributos:
{ "name": "hero.mp4", "url": "https://cdn.example.com/hero.mp4" }Una lista de objetos es un array JSON en el que cada entrada es un objeto:
[
{ "name": "hero.mp4", "url": "https://cdn.example.com/hero.mp4" },
{ "name": "lifestyle.mp4", "url": "https://cdn.example.com/lifestyle.mp4", "duration": 12 }
]Hay unas cuantas reglas que se aplican a todas las mutaciones que leen atributos:
- Los atributos pueden variar entre objetos. Un objeto puede tener duration y el siguiente no.
- Un atributo que no existe se lee como vacío. Leer duration del primer objeto de arriba da un valor vacío, no falla.
- Los nombres de atributo deben coincidir exactamente. Name y name son dos atributos distintos.
- Los atributos anidados usan rutas con puntos e índices de lista. Usa address.city para leer dentro de un objeto anidado e images[0] para elegir la primera entrada de una lista anidada. Una ruta puede seguir después del índice, como en sources[0].url, o terminar en él, en cuyo caso se lee la entrada en sí (un objeto o una lista como texto JSON compacto).
Los objetos y las listas son valores distintos
Un solo objeto y una lista de objetos son dos valores distintos, y cada mutación espera uno de ellos:
- Las mutaciones de objeto trabajan con un solo objeto: Extraer atributo.
- Las mutaciones de lista trabajan con una lista de objetos: Buscar objeto, Extraer atributo de cada objeto, Filtrar objetos, Ordenar objetos, Contar objetos y Take.
Las mutaciones de lista simple, como Filtrar y Sort, no tienen una opción de atributo. Sus equivalentes JSON de la categoría JSON hacen lo mismo con una lista de objetos y te dejan indicar el atributo.
Buscar objeto es el paso de una lista a un solo objeto: devuelve el primer objeto que coincide. No hay un paso de un solo objeto de vuelta a una lista: un solo objeto solo se puede leer con Extraer atributo.
De dónde vienen los objetos y las listas de objetos
- La mutación Analizar JSON. Aplica Analizar JSON a cualquier campo de texto que contenga JSON: un atributo de producto, un campo extra importado de tu tienda o un campo interno. Un array de objetos da una lista de objetos, y un solo objeto da un objeto.
- Campos internos. Un campo interno con el tipo de valor Objects (JSON) pasa su objeto o su lista de objetos a todos los mapeos que lo usan, así que el JSON se analiza una vez y se reutiliza.
Cuando una mutación de texto como Add prefix se aplica a una lista de objetos, primero cada objeto se convierte en su texto JSON compacto, así que la mutación se aplica a un texto por objeto. Un solo objeto se convierte en un solo texto. Para obtener un único texto JSON para toda la lista, usa Serializar JSON.
Repetir elementos de lista
Algunos canales necesitan un elemento anidado por cada entrada de una lista, por ejemplo un elemento <video> con un hijo <url> y un hijo <title> por cada vídeo. En un campo de salida anidado (un campo padre con campos hijos), abre un elemento de lista, activa Repeat this item for each entry in a list y elige la lista sobre la que repetir. Sirve cualquier lista: una lista de objetos da un elemento por objeto, y una lista simple, como etiquetas, enlaces de imágenes o una lista estática, da un elemento por entrada. Un solo objeto o un solo texto no genera nada.
Dentro de un elemento que se repite, cada valor hijo puede usar Elemento actual en el selector de valores. En una lista de objetos, escribe una ruta de atributo como url o name para leer ese atributo del objeto actual. Hay dos atributos reservados que funcionan con cualquier lista:
- @index da la posición de la entrada en la lista, empezando por 0.
- @value da la entrada en sí: el texto de una entrada de una lista simple, o el objeto actual como texto JSON compacto.
Por ejemplo, para generar un elemento <image> por cada enlace de imagen, repite el elemento sobre el campo images y asigna el hijo desde Elemento actual con el atributo @value.
Ejemplo
Un campo extra videos contiene el JSON de arriba. Para obtener la URL de cada vídeo cuyo nombre contiene hero:
- Elige el campo extra videos.
- Añade Analizar JSON.
- Añade Filtrar objetos con la operación keep, el atributo name, la condición Incluye y el valor hero.
- Añade Extraer atributo de cada objeto con el atributo url.
El resultado es una lista con una entrada: https://cdn.example.com/hero.mp4.
Para leer un atributo de un solo objeto, usa Buscar objeto seguido de Extraer atributo.
Quicklook muestra los objetos y las listas de objetos como una pequeña tabla por objeto, y muestra los elementos de lista repetidos una vez por cada entrada de la lista.