Passar para o conteúdo principal

[Entrada de Pedidos - GCW] Exemplos de Mapeador de Modelos

T
Escrito por Toby Dawson
Atualizado há mais de 2 semanas

Este guia traz exemplos práticos de mapeadores de templates Jinja2 no GelatoConnect para ajudar você a implementar cenários comuns de transformação de dados. Seja mapeando dados de pedidos, transformando notificações ou implementando Lookups, estes exemplos vão oferecer uma base sólida para começar.

Exemplo básico de envio de pedido

Este exemplo mostra como enviar um pedido padrão:

Dados de entrada:

{  "order": {    "id": "12345",    "customer_email": "[email protected]",    \"items\": [      {        "id": "item-1",        "product_code": "POSTER-A3",        "quantity": 2,        "file_url": "https://example.com/files/poster.pdf"      }    ],    \"shipping\": {      "destinatário": {        "first_name": "John",        \"last_name\": \"Smith\"      },      "endereço": {        \"line1\": \"123 Main St\",        "line2": "Apto 4B",        "city": "Nova York",        "postal_code": "10001",        "country": "EUA",        "state": "NY"      },      "phone": "212-555-1234"    }  }}

Mapeador de Modelos:

{  "orderReferenceId": "##{{ order.id }}",  \"orderType\": \"order\",  "currency": "USD",  "shippingAddress": {    "firstName": "##{{ order.shipping.recipient.first_name }}",    "lastName": "##{{ order.shipping.recipient.last_name }}",    "addressLine1": "##{{ order.shipping.address.line1 }}",    \"addressLine2\": \"##{{ order.shipping.address.line2 }}\",    \"city\": \"##{{ order.shipping.address.city }}\",    "postCode": "##{{ order.shipping.address.postal_code }}",    \"country\": \"##{{ order.shipping.address.country }}\",    "state": "##{{ order.shipping.address.state }}",    "email": "##{{ order.customer_email }}",    "phone": "##{{ order.shipping.phone }}"  },  "itens": [    {% for item in order.items %}    {      "itemReferenceId": "##{{ item.id }}",      "productUid": "##{{ lookups({'product_code': item.product_code}, strict=False, default='') }}",      "quantity": ##{{ item.quantity }},      "arquivos": [        {          "type": "padrão",          "url": "##{{ item.file_url }}"        }      ]    }{% if not loop.last %},{% endif %}    {% endfor %}  ]}

Trabalhando com vários arquivos de produtos

Este exemplo trata de produtos com múltiplos arquivos (frente e verso):

Dados de entrada:

{  "orderReferenceId": "##{{ order.id }}",  "orderType": "pedido",  \"currency\": \"USD\",  "shippingAddress": {    "firstName": "##{{ order.shipping.recipient.first_name }}",    "lastName": "##{{ order.shipping.recipient.last_name }}",    "addressLine1": "##{{ order.shipping.address.line1 }}",    "addressLine2": "##{{ order.shipping.address.line2 }}",    "city": "##{{ order.shipping.address.city }}",    "postCode": "##{{ order.shipping.address.postal_code }}",    \"country\": \"##{{ order.shipping.address.country }}\",    "state": "##{{ order.shipping.address.state }}",    "email": "##{{ order.customer_email }}",    \"phone\": \"##{{ order.shipping.phone }}\"  },  \"items\": [    {% for item in order.items %}    {      "itemReferenceId": "##{{ item.id }}",      "productUid": "##{{ lookups({'product_code': item.product_code}, strict=False, default='') }}",      "quantity": ##{{ item.quantity }},      "arquivos": [        {          "type": "padrão",          "url": "##{{ item.file_url }}"        }      ]    }{% if not loop.last %},{% endif %}    {% endfor %}  ]}

Mapeador de Modelos:

{  "orderReferenceId": "##{{ orderNumber }}",  "orderType": "pedido",  "currency": "USD",  "shippingAddress": {    {% set nameParts = deliveryDetails.contactName.split(' ') %}    \"firstName\": \"##{{ nameParts[0] }}\",    \"lastName\": \"##{{ nameParts[1:] | join(' ') }}\",    "addressLine1": "##{{ deliveryDetails.address.street }}",    \"city\": \"##{{ deliveryDetails.address.city }}\",    "state": "##{{ deliveryDetails.address.state }}",    \"postCode\": \"##{{ deliveryDetails.address.zip }}\",    "country": "##{{ deliveryDetails.address.country }}",    "email": "##{{ deliveryDetails.email }}",    \"phone\": \"##{{ deliveryDetails.phone }}\"  },  "itens": [    {% for product in products %}    {      "itemReferenceId": "##{{ product.productId }}",      "productUid": "##{{ lookups({'sku': product.sku}, strict=False, default='') }}",      "quantity": ##{{ product.qty }},      "arquivos": [        {          \"type\": \"front\",          \"url\": \"##{{ product.files.front }}\""        },        {          "type": "voltar",          "url": "##{{ product.files.back }}"        }      ]    }{% if not loop.last %},{% endif %}    {% endfor %}  ]}

Exemplo de Lógica Condicional

Este exemplo mostra como usar lógica condicional para lidar com diferentes tipos de produtos:

Dados de entrada:

{  "orderId": "ORD-5555",  \"customer\": {    "name": "Alice Johnson",    "email": "[email protected]",    \"telefone\": \"555-123-4567\"  },  "shipping": {    "address": "789 Rua Pine",    \"apartamento\": \"\",    \"city\": \"Boston\",    \"state\": \"MA\",    \"zipCode\": \"02108\",    "country": "EUA"  },  \"items\": [    {      "id": "ITEM-A",      "type": "pôster",      "sku": "POSTER-LG",      "quantity": 1,      "image": "https://example.com/files/poster.jpg"    },    {      "id": "ITEM-B",      "type": "cartão",      "sku": "CARD-SM",      "quantity": 100,      "frontImage": "https://example.com/files/card-front.jpg",      "backImage": "https://example.com/files/card-back.jpg"    }  ]}

Mapeador de modelos:

{  "orderReferenceId": "##{{ orderId }}",  "orderType": "pedido",  "currency": "USD",  "shippingAddress": {    {% set nameParts = customer.name.split(' ') %}    "firstName": "##{{ nameParts[0] }}",    \"lastName\": \"##{{ nameParts[1:] | join(' ') }}\",    \"addressLine1\": \"##{{ shipping.address }}\",    {% if shipping.apartment %}    "addressLine2": "##{{ shipping.apartment }}",    {% endif %}    "city": "##{{ shipping.city }}",    \"state\": \"##{{ shipping.state }}\",    \"postCode\": \"##{{ shipping.zipCode }}\",    \"country\": \"##{{ shipping.country }}\",    \"email\": \"##{{ customer.email }}\",    \"phone\": \"##{{ customer.phone }}\"  },  "itens": [    {% for item in items %}    {      "itemReferenceId": "##{{ item.id }}",      "productUid": "##{{ lookups({'sku': item.sku}, strict=False, default='') }}",      "quantity": ##{{ item.quantity }},      \"files\": [        {% if item.type == 'poster' %}        {          \"type\": \"default\",          "url": "##{{ item.image }}"        }        {% elif item.type == 'card' %}        {          "type": "frente",          "url": "##{{ item.frontImage }}"        },        {          \"type\": \"back\",          "url": "##{{ item.backImage }}"        }        {% endif %}      ]    }{% if not loop.last %},{% endif %}    {% endfor %}  ]}

Exemplo de postback de atualização de status do pedido

Este exemplo mostra como formatar uma notificação de postback para mudanças no status do pedido:

Dados de entrada:

{  "orderId": "a6a1f9ce-2bdd-4a9e-9f8d-0009df0e24d9",  "orderReferenceId": "J123X456",  "customerReferenceId": "CUST-789",  "fulfillmentStatus": "enviado",  "created": "2023-04-12T10:26:52+00:00",  "itens": [    {      "itemReferenceId": "123",      "fulfillmentStatus": "enviado",      "atendimentosDePedidos": [        {          "trackingCode": "TRK123456789",          \"trackingUrl\": \"https://example.com/tracking?code=TRK123456789\",          "carrierName": "FedEx",          \"carrierUid\": \"fed_ex_ground\",          "fulfillmentCountry": "EUA",          "fulfillmentStateProvince": "NY"        }      ]    }  ]}

Mapeador de Modelos:

{  "event": "PEDIDO_ENVIADO",  "timestamp": "##{{ created }}",  "order": {    "id": "##{{ orderReferenceId }}",    \"customer_id\": \"##{{ customerReferenceId }}\",    "status": "##{{ fulfillmentStatus | upper }}",    "shipped_items": [      {% for item in items %}      {% if item.fulfillmentStatus == 'shipped' %}      {        \"item_id\": \"##{{ item.itemReferenceId }}\",        "tracking": {          {% for fulfillment in item.fulfillments %}          \"carrier\": \"##{{ fulfillment.carrierName }}\",          "tracking_number": "##{{ fulfillment.trackingCode }}",          "tracking_url": "##{{ fulfillment.trackingUrl }}",          "shipped_from": {            "country": "##{{ fulfillment.fulfillmentCountry }}",            "state": "##{{ fulfillment.fulfillmentStateProvince }}"          }          {% endfor %}        }      }{% if not loop.last %},{% endif %}      {% endif %}      {% endfor %}    ]  }}

Exemplo de pesquisas avançadas

Este exemplo demonstra consultas complexas para mapeamento de produtos e seleção de transportadoras:

Dados de entrada:

{  "reference": "PEDIDO-8888",  \"recipient\": {    \"fullName\": \"Robert Brown\",    "emailAddress": "[email protected]",    \"phoneNumber\": \"888-555-1212\",    "shippingInformation": {      \"streetAddress\": \"321 Oak Ave\",      "city": "Chicago",      "state": "IL",      "postalCode": "60601",      "countryCode": "US"    }  },  "orderItems": [    {      "lineItemId": "LI-001",      \"productReference\": {        \"code\": \"BK-HCVR-A5\",        \"type\": \"hardcover_book\",        "size": "A5"      },      "quantity": 1,      "assetUrls": {        "coverFile": "https://example.com/files/book-cover.pdf",        \"interiorFile\": \"https://example.com/files/book-interior.pdf\"      },      \"additionalAttributes\": {        \"pageCount\": 120,        "paperType": "premium"      }    }  ],  "shippingPreference": "padrão",  "region": "américa do norte"}

Mapeador de Modelos:

{% set shipping_lookup = {  "express_north_america": "fed_ex_2_day",  \"express_europe\": \"dhl_express_eu\",  \"standard_north_america\": \"ups_ground\",  \"standard_europe\": \"dhl_parcel_eu\"} %}{% set product_lookup = {} %}{% set product_lookup = product_lookup.update({  \"BK-HCVR-A5-premium\": \"book_product_pf_a5_pt_premium_cl_4-4_hcvr\",  "BK-HCVR-A5-standard": "livro_produto_pf_a5_pt_padrão_cl_4-4_hcvr",  \"BK-SCVR-A5-premium\": \"book_product_pf_a5_pt_premium_cl_4-4_scvr\",  "BK-SCVR-A5-standard": "livro_produto_pf_a5_pt_padrão_cl_4-4_scvr"}) %}{  "orderReferenceId": "##{{ reference }}",  "orderType": "pedido",  \"currency\": \"USD\",  {% set shipping_key = shippingPreference + '_' + region %}  "shipmentMethodUid": "##{{ shipping_lookup.get(shipping_key, 'normal') }}",  "shippingAddress": {    {% set name_parts = recipient.fullName.split(' ') %}    "firstName": "##{{ name_parts[0] }}",    "lastName": "##{{ name_parts[1:] | join(' ') }}",    "addressLine1": "##{{ recipient.shippingInformation.streetAddress }}",    "city": "##{{ recipient.shippingInformation.city }}",    \"state\": \"##{{ recipient.shippingInformation.state }}\",    "postCode": "##{{ recipient.shippingInformation.postalCode }}",    "country": "##{{ recipient.shippingInformation.countryCode }}",    "email": "##{{ recipient.emailAddress }}",    "phone": "##{{ recipient.phoneNumber }}"  },  "itens": [    {% for item in orderItems %}    {      "itemReferenceId": "##{{ item.lineItemId }}",      {% set product_key = item.productReference.code + '-' + item.additionalAttributes.paperType %}      \"productUid\": \"##{{ product_lookup.get(product_key, lookups({'code': item.productReference.code, 'paper': item.additionalAttributes.paperType}, strict=False, default='')) }}\",      "quantity": ##{{ item.quantity }},      "pageCount": ##{{ item.additionalAttributes.pageCount }},      "arquivos": [        {          "type": "capa",          "url": "##{{ item.assetUrls.coverFile }}"        },        {          "type": "interno",          "url": "##{{ item.assetUrls.interiorFile }}"        }      ]    }{% if not loop.last %},{% endif %}    {% endfor %}  ]}

Trabalhando com Datas e Formatação

Este exemplo mostra como formatar datas e manipular textos:

Dados de Entrada:

{  "orderNum": "INV-20230412-001",  \"datePlaced\": \"2023-04-12T14:30:00Z\",  \"clientDetails\": {    "id": "CLIENT001",    "contactInfo": {      "name": "SARAH WILLIAMS",      \"email\": \"[email protected]\",      \"telephone\": \"1.212.555.7890\"    },    "deliveryAddress": {      \"line1\": \"555 Broadway\",      "line2": "10º andar",      \"city\": \"Nova York\",      "region": "Nova York",      "code": "10012",      "country": "Estados Unidos"    }  },  "lineItems": [    {      "refCode": "LI-001-A",      \"productIdentifier\": \"BROCHURE-A4-GLOSSY\",      "amount": 250,      \"artwork\": \"https://example.com/files/brochure.pdf\"    }  ]}

Mapeador de Modelos:

{% set country_codes = {  \"Estados Unidos\": \"US\",  "Reino Unido": "GB",  \"Canadá\": \"CA\",  "Austrália": "AU",  \"Alemanha\": \"DE\",  "França": "FR"} %}{% set date_parts = datePlaced.split('T')[0].split('-') %}{% set formatted_date = date_parts[2] + '/' + date_parts[1] + '/' + date_parts[0] %}{  "orderReferenceId": "##{{ orderNum }}",  "orderType": "pedido",  "currency": "USD",  \"metadata\": [    {      \"key\": \"clientId\",      \"value\": \"##{{ clientDetails.id }}\"    },    {      "key": "dataDoPedido",      "value": "##{{ formatted_date }}"    }  ],  \"shippingAddress\": {    {% set name_parts = clientDetails.contactInfo.name | lower | title | split(' ') %}    "firstName": "##{{ name_parts[0] }}",    "lastName": "##{{ name_parts[1:] | join(' ') }}",    "addressLine1": "##{{ clientDetails.deliveryAddress.line1 }}",    "addressLine2": "##{{ clientDetails.deliveryAddress.line2 }}",    \"city\": \"##{{ clientDetails.deliveryAddress.city }}\",    "state": "##{{ clientDetails.deliveryAddress.region }}",    \"postCode\": \"##{{ clientDetails.deliveryAddress.code }}\",    "country": "##{{ country_codes.get(clientDetails.deliveryAddress.country, 'US') }}",    "email": "##{{ clientDetails.contactInfo.email }}",    "phone": "##{{ clientDetails.contactInfo.telephone | replace('.', '-') }}"  },  \"items\": [    {% for item in lineItems %}    {      "itemReferenceId": "##{{ item.refCode }}",      "productUid": "##{{ lookups({'product_id': item.productIdentifier}, strict=False, default='') }}",      "quantity": ##{{ item.amount }},      "arquivos": [        {          "type": "padrão",          "url": "##{{ item.arte }}"        }      ]    }{% if not loop.last %},{% endif %}    {% endfor %}  ]}

Tratamento de erros e valores padrão

Este exemplo mostra como lidar com erros de forma eficiente, usando valores padrão:

Dados de entrada:

{  "id": "ORD-91011",  "comprador": {    "name": "Michael Johnson"    // Campo de e-mail ausente  },  "shipping": {    \"name\": \"Michael Johnson\",    \"address\": \"111 River Rd\",    // Cidade ausente    "province": "Ontário",    "postal": "M5V 2H1",    \"country\": \"CA\"  },  "itens": [    {      \"id\": \"ITEM-001\",      "sku": "CALENDAR-WALL",      \"quantidade\": 1,      "assets": {        "main": "https://example.com/files/calendar.pdf"      }    },    {      // Item incompleto      "id": "ITEM-002"    }  ]}

Mapeador de modelos:

{  "orderReferenceId": "##{{ id }}",  \"orderType\": \"order\",  "currency": "CAD",  \"shippingAddress\": {    {% set recipient = shipping.name | default('') %}    {% set name_parts = recipient.split(' ') if recipient else ['', ''] %}    "firstName": "##{{ name_parts[0] | default('Desconhecido') }}",    "lastName": "##{{ name_parts[1:] | join(' ') | default('Cliente') }}",    "addressLine1": "##{{ shipping.address | default('Endereço ausente') }}",    "city": "##{{ shipping.city | default('Toronto') }}",    "state": "##{{ shipping.province | default('ON') }}",    "postCode": "##{{ shipping.postal | default('') }}",    "country": "##{{ shipping.country | default('BR') }}",    "email": "##{{ buyer.email | default('[email protected]') }}",    "phone": "##{{ buyer.phone | default('000-000-0000') }}"  },  \"items\": [    {% for item in items %}    {% if item.id and item.sku and item.quantity %}    {      "itemReferenceId": "##{{ item.id }}",      "productUid": "##{{ lookups({'sku': item.sku}, strict=False, default='') }}",      "quantity": ##{{ item.quantity }},      \"files\": [        {          "type": "padrão",          \"url\": \"##{{ item.assets.main | default('') }}\"        }      ]    }{% if not loop.last %},{% endif %}    {% endif %}    {% endfor %}  ]}

Combinando várias fontes

Este exemplo reúne dados de várias fontes:

Dados de entrada:

{  "order": {    "id": "PO-12345",    "type": "padrão"  },  "customer": {    "id": "CUST-789",    "segment": "negócio"  },  "destinatário": {    "first": "David",    "last": "Miller",    "email": "[email protected]",    "phone": "303-555-1212",    "entrega": {      "address": "987 State St",      "suite": "Sala 500",      "city": "Denver",      "state": "CO",      "zip": "80202",      "country": "EUA"    }  },  "produtos": [    {      "id": "PROD-A1",      \"code\": \"FLYER-A4-FULL\",      \"count\": 500,      "arte": "https://example.com/files/flyer.pdf"    }  ],  "shipping": {    "method": "terrestre",    "expectedDays": 3  },  "promocional": {    "campaign": "SPRING2023",    \"source\": \"email\"  }}

Mapeador de Modelos:

{% set shipping_method_map = {  "overnight": "fed_ex_priority_overnight",  "express": "fed_ex_2_day",  "ground": "fed_ex_ground"} %}{  "orderReferenceId": "##{{ order.id }}",  "orderType": "##{{ 'rascunho' if order.type == 'preorder' else 'pedido' }}",  "currency": "USD",  "customerReferenceId": "##{{ customer.id }}",  "shipmentMethodUid": "##{{ shipping_method_map.get(shipping.method, 'normal') }}",  "metadata": [    {      "key": "campanha",      "value": "##{{ promotional.campaign }}"    },    {      "key": "fonte",      "value": "##{{ promotional.source }}"    },    {      "key": "segment",      "value": "##{{ customer.segment }}"    },    {      "key": "previsaoDeEntrega",      "value": "##{{ shipping.expectedDays }}"    }  ],  "shippingAddress": {    "firstName": "##{{ recipient.first }}",    "lastName": "##{{ recipient.last }}",    "addressLine1": "##{{ recipient.delivery.address }}",    "addressLine2": "##{{ recipient.delivery.suite }}",    "city": "##{{ recipient.delivery.city }}",    "state": "##{{ recipient.delivery.state }}",    \"postCode\": \"##{{ recipient.delivery.zip }}\",    "country": "##{{ recipient.delivery.country }}",    "email": "##{{ recipient.email }}",    "phone": "##{{ recipient.phone }}"  },  \"items\": [    {% for product in products %}    {      "itemReferenceId": "##{{ product.id }}",      \"productUid\": \"##{{ lookups({'product_code': product.code}, strict=False, default='') }}\",      \"quantity\": ##{{ product.count }},      \"files\": [        {          \"type\": \"default\",          "url": "##{{ product.artwork }}"        }      ]    }{% if not loop.last %},{% endif %}    {% endfor %}  ]}

Trabalhando com Estruturas Aninhadas Complexas

Este exemplo mostra como lidar com estruturas de dados profundamente aninhadas:

Dados de entrada:

{  "data": {    "transaction": {      "identifiers": {        \"internalRef\": \"TX-44556\",        \"customerRef\": \"CUST-ABC123\"      },      \"metadata\": {        \"createdAt\": \"2023-04-12T09:15:00Z\",        "source": "web",        \"etiquetas\": [\"prioridade\", \"corporativo\"]      }    },    "partes": {      "remetente": {        "organization": "Acme Corp",        "contact": {          \"person\": {            "givenName": "Thomas",            \"familyName\": \"Anderson\"          },          "details": {            \"email\": {              \"address\": \"[email protected]\"            },            "phone": {              "number": "415-555-9876",              \"extension\": \"123\"            }          }        }      },      \"recipient\": {        "person": {          "givenName": "Sarah",          "familyName": "Connor"        },        "contactDetails": {          \"emailAddress\": \"[email protected]\",          \"phoneNumber\": \"213-555-4321\"        },        \"location\": {          \"address\": {            "street": "1984 Tech Blvd",            "unit": "#42",            "locality": "Los Angeles",            "region": "Califórnia",            \"postalCode\": \"90210\",            \"country\": \"EUA\"          }        }      }    },    \"contents\": {      "items": [        {          \"descriptor\": {            \"id\": \"ITM-X789\",            "type": "brochura",            \"specifications\": {              "format": "A4",              \"paperType\": \"Brilhante\",              \"colorProfile\": \"CMYK\"            }          },          \"quantity\": {            "value": 1000,            \"unit\": \"pcs\"          },          \"digitalAssets\": {            \"printable\": {              \"fileLocation\": \"https://example.com/files/brochure-complex.pdf\"            }          }        }      ]    }  }}

Mapeador de modelos:

{% set country_map = {  "EUA": "US",  "Estados Unidos": "US",  \"Estados Unidos da América\": \"US\",  "Reino Unido": "GB",  \"Reino Unido\": \"GB\",  "Inglaterra": "GB"} %}{  "orderReferenceId": "##{{ data.transaction.identifiers.internalRef }}",  \"orderType\": \"order\",  "currency": "USD",  "customerReferenceId": "##{{ data.transaction.identifiers.customerRef }}",  "metadata": [    {      \"key\": \"createdAt\",      "value": "##{{ data.transaction.metadata.createdAt }}"    },    {      \"key\": \"source\",      "value": "##{{ data.transaction.metadata.source }}"    },    {% for tag in data.transaction.metadata.etiquetas %}    {      "key": "etiqueta_##{{ loop.index }}",      \"value\": \"##{{ tag }}\"    }{% if not loop.last %},{% endif %}    {% endfor %}  ],  \"shippingAddress\": {    \"firstName\": \"##{{ data.parties.recipient.person.givenName }}\",    \"lastName\": \"##{{ data.parties.recipient.person.familyName }}\",    \"addressLine1\": \"##{{ data.parties.recipient.location.address.street }}\",    \"addressLine2\": \"##{{ data.parties.recipient.location.address.unit }}\",    \"city\": \"##{{ data.parties.recipient.location.address.locality }}\",    \"state\": \"##{{ data.parties.recipient.location.address.region }}\",    "postCode": "##{{ data.parties.recipient.location.address.postalCode }}",    \"country\": \"##{{ country_map.get(data.parties.recipient.location.address.country, data.parties.recipient.location.address.country) }}\",    "email": "##{{ data.parties.recipient.contactDetails.emailAddress }}",    "phone": "##{{ data.parties.recipient.contactDetails.phoneNumber }}"  },  "itens": [    {% for item in data.contents.items %}    {      "itemReferenceId": "##{{ item.descriptor.id }}",      \"productUid\": \"##{{ lookups({"        'type': item.descriptor.type,        'format': item.descriptor.specifications.format,        'paper': item.descriptor.specifications.paperType      }, strict=False, default='') }}",      \"quantity\": ##{{ item.quantity.value }},      \"files\": [        {          \"type\": \"default\",          "url": "##{{ item.digitalAssets.printable.fileLocation }}"        }      ]    }{% if not loop.last %},{% endif %}    {% endfor %}  ]}

Dicas para mapeadores de modelos eficazes

Ao trabalhar com Mapeadores de Modelo Jinja2 no GelatoConnect, considere estas dicas práticas:

  1. Use técnicas de depuração:

    • Adicionar campos temporários para mostrar valores intermediários

    • Use o filtro {% raw %}##{{ variable | tojson }}{% endraw %} para depurar objetos complexos

  2. Combine as instruções de conjunto com condicionais:

    jinja{% set shipping_type = 'expresso' if order.priority == 'alta' else 'padrão' %}

  3. Lide com dados ausentes ou aninhados:

    jinja##{{ data.get('nested', {}).get('deeply', {}).get('property', 'default_value') }}

  4. Crie dicionários de mapeamento para associações comuns:

    {% set status_map = {'NEW': 'received', 'SHIPPED': 'shipped', 'DELIVERED': 'delivered'} %}"status": "##{{ status_map.get(input_status, 'desconhecido') }}"

  5. Coloque lógicas reutilizáveis em macros:

    {% macro format_phone(phone) %}##{{ phone | replace(' ', '') | replace('.', '-') }}{% endmacro %}

  6. Use filtros para transformar dados:

    • borda: Remover espaços em branco

    • substituir: Trocar texto

    • upper/lower/title: Alterar caixa

    • default: Forneça valores de reserva

    • tojson: Formatar como uma string JSON

  7. Considere o desempenho para grandes conjuntos de dados:

    • Calcule os valores antes dos loops

    • Use instruções de definição fora dos loops

    • Mantenha os modelos focados e específicos

Próximos passos

Agora que você viu esses exemplos práticos, pode:

  1. Adapte estes modelos às suas necessidades específicas de integração

  2. Crie transformações mais complexas combinando técnicas

  3. Teste seus modelos com dados reais para garantir que tudo funcione perfeitamente

  4. Configure gatilhos de postback usando estes modelos

  5. Implemente pesquisas para mapear valores de forma eficiente

Respondeu à sua pergunta?