JSON fournisseur : chargement, snapshot et transformations

Comment Eofferix reçoit les fichiers et réponses JSON, crée un snapshot de noeuds uniques et transforme les données en XML, tableaux, autre JSON ou import.

Eofferix accepte les fichiers JSON et les réponses JSON. Vous pouvez charger un fichier ponctuel, le recevoir automatiquement depuis une pièce jointe email, le récupérer par lien direct, par lien avec autorisation, via FTP/FTPS/SFTP ou depuis l’API du fournisseur.

Après réception, le JSON peut être converti en XML, en tableaux CSV/XLSX, en un autre JSON avec paramètres et valeurs modifiés, ou importé dans les applications prises en charge par le service.

Snapshot JSON fournisseur dans Eofferix
Après le chargement, le service affiche un court snapshot avec les noeuds uniques et des exemples de valeurs.

Fonctionnement du snapshot

Le service analyse le fichier et le transforme en un court snapshot avec des noeuds uniques. Si un tableau contient mille produits, le snapshot montre la structure d’un élément type et les champs trouvés dans les données, pas mille répétitions.

Dans le snapshot, vous pouvez renommer les noeuds, modifier la structure, supprimer les champs inutiles, créer de nouveaux noeuds et configurer les règles de transformation. À l’exécution suivante, ces règles sont appliquées à tout le JSON reçu de la source.

Ce qui peut être transformé

  • Renommage de champs. Par exemple transformer id en external_id, name en title et prices.base en price.
  • Filtrage d’enregistrements. Garder seulement les produits où flags.active = true, ou exporter uniquement les produits avec stock supérieur à zéro.
  • Changement d’imbrication. Déplier stock[] en liste d’entrepôts, collecter attributes[] en propriétés et déplacer les images dans un noeud media.
  • Calcul de valeurs. Construire un chemin de catégorie, calculer un prix remisé, normaliser la devise ou remplir la date d’import.
  • Transformation d’images. Convertir les images en jpg, png ou webp, les redimensionner et appliquer un filigrane.
  • Import applicatif. Lier les noeuds JSON aux champs d’un catalogue, CRM, CMS ou autre destination compatible.
Paramètres de la valeur Prix avec règles de transformation JSON
Exemple de transformations séquentielles pour le champ Prix. Les transformations peuvent utiliser non seulement la valeur actuelle, mais aussi d’autres noeuds du document pour les calculs.

Exemples de transformations

Les règles de transformation permettent de modifier fortement l’export final : filtrer les éléments inutiles, renommer des noeuds, créer une nouvelle structure, calculer des valeurs, remplir de nouveaux champs depuis d’autres parties du document et préparer le résultat pour une marketplace, un site, un PIM ou un système interne.

Ce que fait l’exemple de prix

Les mêmes règles sont détaillées ci-dessous. Chaque capture montre uniquement la ligne de règle responsable de l’étape.

1. Les espaces sont d’abord supprimés dans la valeur du prix. C’est utile lorsque le fournisseur envoie le prix sous forme de chaîne, par exemple 12 990.

Supprimer les espaces

2. Si le prix n’est pas vide, le service l’augmente de 15 %. Cela ajoute une marge sans modifier le JSON source.

Étape 2 : calculer la marge

3. Ensuite, la règle vérifie un autre noeud du document : /catalog/items/stock/qty. Si le stock est inférieur à 5, le prix est remplacé par 0.

Étape 3 : stock inférieur à 5 - remplacer par 0

4. Une autre règle utilise /catalog/items/brand : pour TestBrand, le prix est aussi multiplié par 1,5.

Étape 4 : TestBrand - multiplier par 1,5

5. Enfin, le résultat est arrondi à une décimale selon les règles standard.

Étape 5 : arrondir le résultat

Exemple simple : renommer les champs et garder les produits actifs

Cet exemple prend les éléments de catalog.items[], garde seulement les produits actifs et adapte les noms des champs au format cible.

Avant
données source
{
  "id": "A-100",
  "sku": "ITEM-100",
  "name": "Nordic armchair",
  "prices": {
    "base": 129.90,
    "discount": 119.90
  },
  "flags": {
    "active": true
  }
}
Après
après configuration
{
  "external_id": "A-100",
  "sku": "ITEM-100",
  "title": "Nordic armchair",
  "price": 119.90,
  "old_price": 129.90
}

Règles :

  1. Le JSON source contient un produit avec id = A-100. Les autres produits ont la même structure, mais le snapshot affiche un représentant du tableau répété catalog.items[]. Cliquez sur la valeur true dans l’objet flags, champ active, puis dans Conditions d’export choisissez Condition pour tout l’élément. Cela permet d’exporter seulement les éléments à true, ou d’exclure les éléments à false.
    Conditions d’export pour un produit actif
    La condition s’applique à l’élément complet : le produit est exporté si flags.active vaut true ; la deuxième règle peut servir de contrôle inverse pour false.
  2. Renommez le noeud id en external_id : cliquez sur le nom du noeud et saisissez le nouveau nom.
    Renommer id en external_id
    Paramètres du noeud : external_id est saisi dans le champ Nom du noeud.
  3. Renommez name en title de la même façon. Aucune capture séparée n’est nécessaire : l’action est identique à celle de id.
  4. Deux scénarios fonctionnent pour les prix. Si le conteneur prices convient, renommez prices.discount en price et prices.base en old_price. Si price et old_price doivent être au niveau du produit, créez de nouveaux noeuds à côté de id et name, remplissez-les depuis /catalog/items/prices/discount et /catalog/items/prices/base, puis n’exportez pas l’ancien conteneur prices.
    Remplir le nouveau noeud price depuis prices.discount
    Pour le nouveau champ price, utilisez l’action remplacer : la valeur vient d’un autre noeud du document.

Nouveaux noeuds

Un nouveau noeud est nécessaire lorsque le résultat doit contenir un champ absent du JSON source, ou lorsque les données source doivent être réorganisées.

Ajout du noeud final_price dans le snapshot JSON

Un noeud peut être rempli avec :

  1. une valeur venant d’une autre partie du fichier source, par exemple le nom, le SKU, la marque, ou plusieurs valeurs réunies dans un champ unique comme Nom SKU Marque;
  2. une valeur système, comme la date d’exécution ou le nom de la source;
  3. une expression, par exemple assembler le chemin de catégorie ou calculer le pourcentage de remise;
  4. il peut aussi être transformé en variable.

Variables : pourquoi elles sont utiles

Une variable stocke un résultat intermédiaire. Elle est pratique quand une valeur doit être utilisée dans plusieurs champs ou conditions.

Important : les variables n’apparaissent pas dans l’export final. Elles servent uniquement à aider les autres transformations : vous pouvez stocker un résultat intermédiaire puis l’utiliser dans des règles, conditions ou calculs.

Configuration de final_price comme variable
Un noeud peut devenir une variable : il est calculé avant les autres champs puis réutilisé dans les règles et conditions.

Par exemple, final_price est calculée une seule fois :

final_price = prices.discount si prices.discount est rempli, sinon prices.base

Elle peut ensuite être utilisée dans plusieurs règles :

  • product.prices.price = final_price ;
  • product.prices.old_price = prices.base, si final_price est inférieur au prix de base ;
  • product.prices.discount_percent est calculé depuis prices.base et final_price ;
  • la condition d’export vérifie que final_price est supérieure à zéro.

Les règles restent ainsi plus courtes et le prix ne diverge pas entre plusieurs parties du résultat à cause de calculs manuels répétés.