Listas de objetos
Muitas fontes de produtos têm dados estruturados: uma lista de vídeos com uma URL e um nome, uma tabela de tamanhos, um conjunto de variantes com um preço cada. O Feedr pode trabalhar com esses dados como objetos JSON e listas de objetos.
Um objeto JSON é um conjunto de atributos:
{ "name": "hero.mp4", "url": "https://cdn.example.com/hero.mp4" }Uma lista de objetos é um array JSON em que cada entrada é um objeto:
[
{ "name": "hero.mp4", "url": "https://cdn.example.com/hero.mp4" },
{ "name": "lifestyle.mp4", "url": "https://cdn.example.com/lifestyle.mp4", "duration": 12 }
]Algumas regras se aplicam a todas as mutações que leem atributos:
- Os atributos podem variar entre objetos. Um objeto pode ter duration e o seguinte não.
- Um atributo que não existe é lido como vazio. Ler duration do primeiro objeto acima resulta em um valor vazio, sem falhar.
- Os nomes de atributo precisam corresponder exatamente. Name e name são dois atributos diferentes.
- Atributos aninhados usam caminhos com pontos e índices de lista. Use address.city para ler dentro de um objeto aninhado e images[0] para escolher a primeira entrada de uma lista aninhada. Um caminho pode continuar depois do índice, como em sources[0].url, ou parar nele, e nesse caso a própria entrada é lida (um objeto ou uma lista como texto JSON compacto).
Objetos e listas são valores diferentes
Um único objeto e uma lista de objetos são dois valores diferentes, e cada mutação espera um deles:
- Mutações de objeto trabalham com um único objeto: Extrair atributo.
- Mutações de lista trabalham com uma lista de objetos: Encontrar objeto, Extrair atributo de cada objeto, Filtrar objetos, Ordenar objetos, Contar objetos e Take.
As mutações de lista simples, como Filtro e Sort, não têm uma opção de atributo. As versões JSON delas, na categoria JSON, fazem o mesmo trabalho em uma lista de objetos e permitem informar o atributo.
Encontrar objeto é o passo de uma lista para um único objeto: ela retorna o primeiro objeto que corresponde. Não existe um passo de um único objeto de volta para uma lista: um único objeto só pode ser lido com Extrair atributo.
De onde vêm os objetos e as listas de objetos
- A mutação Analisar JSON. Aplique Analisar JSON a qualquer campo de texto que contenha JSON: um atributo de produto, um campo extra importado da sua loja ou um campo interno. Um array de objetos resulta em uma lista de objetos, e um único objeto resulta em um objeto.
- Campos internos. Um campo interno com o tipo de valor Objects (JSON) passa seu objeto ou sua lista de objetos para todos os mapeamentos que o usam, então o JSON é analisado uma vez e reutilizado.
Quando uma mutação de texto como Add prefix é aplicada a uma lista de objetos, cada objeto é primeiro transformado no seu texto JSON compacto, então a mutação é aplicada a um texto por objeto. Um único objeto é transformado em um único texto. Para obter um único texto JSON para a lista inteira, use Serializar JSON.
Repetir itens de lista
Alguns canais precisam de um elemento aninhado para cada entrada de uma lista, por exemplo um elemento <video> com um filho <url> e um filho <title> para cada vídeo. Em um campo de saída aninhado (um campo pai com campos filhos), abra um item de lista, ative Repeat this item for each entry in a list e escolha a lista a ser repetida. Qualquer lista funciona: uma lista de objetos gera um item por objeto, e uma lista simples, como tags, links de imagens ou uma lista estática, gera um item por entrada. Um único objeto ou um único texto não gera nada.
Dentro de um item que se repete, cada valor filho pode usar Item atual no seletor de valores. Em uma lista de objetos, digite um caminho de atributo como url ou name para ler esse atributo do objeto atual. Dois atributos reservados funcionam com qualquer lista:
- @index retorna a posição da entrada na lista, começando em 0.
- @value retorna a própria entrada: o texto de uma entrada de lista simples, ou o objeto atual como texto JSON compacto.
Por exemplo, para gerar um elemento <image> para cada link de imagem, repita o item sobre o campo images e mapeie o filho a partir de Item atual com o atributo @value.
Exemplo
Um campo extra videos contém o JSON acima. Para obter a URL de cada vídeo cujo nome contém hero:
- Escolha o campo extra videos.
- Adicione Analisar JSON.
- Adicione Filtrar objetos com a operação keep, o atributo name, a condição Inclui e o valor hero.
- Adicione Extrair atributo de cada objeto com o atributo url.
O resultado é uma lista com uma entrada: https://cdn.example.com/hero.mp4.
Para ler um atributo de um único objeto, use Encontrar objeto seguido de Extrair atributo.
O Quicklook mostra objetos e listas de objetos como uma pequena tabela por objeto, e mostra os itens de lista repetidos uma vez para cada entrada da lista.