Transformateur : dans le champ d’application, global

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 4 minutes de lecture
  • L’API Transformer fournit des méthodes pour analyser et transformer du contenu source JSON ou XML structuré en sortie de paire clé-valeur structurée, à l’aide d’un ensemble défini de règles.

    Cette API fonctionne avec les API TransformerDefinition et TransformerRuleList . Ensemble, ces API transforment les nœuds XML ou toute entité d’un document JSON structuré en une sortie de paires nom-valeur. Entités JSON prises en charge, y compris les objets et les éléments d’un tableau, tels que les chaînes, les nombres et autres tableaux.

    • L’API TransformerRuleList vous permet de créer des listes de règles de transformation qui définissent les données du document source à inclure dans la sortie et la manière de transformer les données sources.

    • L’API TransformerDefinition associe une liste de règles de transformation à un chemin d’enregistrement JSON/XML pour définir des objets de définition de transformation réutilisables. Vous pouvez utiliser un objet de définition de transformation pour transformer un ou plusieurs documents sources.

    • L’API Transformer effectue la transformation des données réelles, une entité de données à la fois, à l’aide de la liste de règles de transformation spécifiée pour créer les données de sortie souhaitées.

    Vous pouvez utiliser la classe Transformer dans les scripts de serveur inclus dans le champ d’application et dans les scripts de serveur global. Lorsque vous utilisez cette classe, utilisez l’identificateur de l’espace de noms sn_tfrm . Pour que cette API soit disponible dans une instance, vous devez activer le module d’extension Service de transformation (com.glide.transform).

    L’exemple suivant illustre l’utilisation de l’API TransformerRuleList pour définir les règles de transformation, de l’API TransformerDefinition pour définir les critères de transformation et de l’API Transformer pour effectuer la transformation.

    Cet exemple de code récupère un document de détails de stock JSON externe, crée des règles pour transformer ces données en table tabulaire, puis transforme le document source, une ligne à la fois. Voici un extrait du document source JSON en cours de transformation :

    {
      "NOW": {
        "quote": {
          "symbol": "NOW",
          "companyName": "ServiceNow Inc.",
          "primaryExchange": "New York Stock Exchange",
          "sector": "Technology",
          "open": 166.78,
          "openTime": 1522935000556,
          "close": 165.77,
          "changePercent": 0.00656,
           ...
         },
     ...}
    var stockAPI = new sn_ws.RESTMessageV2('Stock Details', 'Default GET'); 
    var response = stockAPI.execute(); 
    var responseBody = response.getBody(); // obtain the source JSON document
    
    /* Define the list of rules to use to transform the acquired JSON stock detail 
    information into a tabular table */
    
    var transformerRuleList = new sn_tfrm.TransformerRuleList() // instantiate the rule list object
      .fromJSON() // indicate that the source document is JSON
      .addRule('ticker', '$.quote.symbol') // add a rule to copy the value in the "symbol" field of the source document to the ticker field in the output document (no changes)
      .addRule('change_percentage', '$.quote.changePercent') // copy the "changePercent" field from source into the change_percentage field of output document
      .thenMultiply('100') // multiply the change_percentage value by 100
      .thenRoundDown('0') // addthen round it down to a whole number 
      .addRule('close_price', '$.quote.close') // copy the "close" field to the close_price field in the 21=-[';output
      .thenAdaptCurrency('USD', false) // attach the US dollar code to the close_price field, but do not display the symbol
      .addRule('summary') // add a blank "summary" field to the output (no corresponding source field)
      .thenConcat('Shares of ') // in the summary field concatenate the string "Shares of "
      .thenConcatSymbol('ticker') // then concatenate the "ticker" field from the source document
      .thenConcat(' closed at ') // then concatenate the string " closed at "
      .thenConcatSymbol('close_price'); // then concatenate the "close_price" field from the source document
    
    // Create a transformer definition that associates the rule list to use and the record path of the set of records in the source document to transform.  
    var path = '$.*'; 
    var transformerDefinition = new sn_tfrm.TransformerDefinition(transformerRuleList, path);
     
    // Instantiate the transformer object.
    var transformer = new sn_tfrm.Transformer(transformerDefinition, responseBody); 
    
    // Transform the source data, one row at a time, until all rows are processed.
    var results = []; 
    while (transformer.transform()) { 
      results.push(transformer.getRow());
    } 

    Sortie :

     {ticker: "Now", change_percentage: "0", close_price: "165.77 USD", summary: "Shares of Now closed at 165.77" }

    Transformateur : transformateur (objet transformerDefinition, document de chaîne)

    Instancie un objet transformateur (constructeur).

    Tableau 1. Paramètres
    Nom Type Description
    transformerDefinition Objet Objet qui décrit la transformation du contenu ; inclut la liste des règles et le chemin d’accès de l’enregistrement JSONPath/XPath.

    Utilisez les API TransformerRuleList() et TransformerDefinition() pour générer cet objet.

    document Chaîne Document source à traduire.
    var stockAPI = new sn_ws.RESTMessageV2('Stock Details', 'Default GET'); 
    var response = stockAPI.execute(); 
    var responseBody = response.getBody(); 
    
    var transformerRuleList = new sn_tfrm.TransformerRuleList()
      .fromJSON()
      .addRule('ticker', 'quote.symbol') 
      .addRule('change_percentage', 'quote.change') 
      .thenMultiply('100') 
      .thenRoundDown('0') 
      .addRule('close_price', 'quote.close') 
      .thenAdaptCurrency('USD', false) 
      .addRule('summary') 
      .thenConcat('Shares of ') 
      .thenConcatSymbol('ticker') 
      .thenConcat(' closed at ') 
      .thenConcatSymbol('close') 
    
     
    var path = '$.*'; 
    var transformerDefinition = new sn_tfrm.TransformerDefinition(transformerRuleList, path); 
    var transformer = new sn_tfrm.Transformer(transformerDefinition, responseBody); 
    
    var results = []; 
    while (transformer.transform()) { 
      results.push(transformer.getRow());
    }

    Transformateur : getRow()

    Renvoie la ligne résultant de la dernière transformation (ou nul si aucune ligne n’existe).

    Tableau 2. Paramètres
    Nom Type Description
    Aucun
    Tableau 3. Renvoie
    Type Description
    Objet Objet contenant une ligne/un nœud de données transformé.
    var results = []; 
    while (transformer.transform()) { 
      results.push(transformer.getRow());
    

    Sortie :

     {ticker: "Now", change_percentage: "0", close_price: "165.77 USD", summary: "Shares of Now closed at 165.77" }

    Transformateur : transform()

    Transforme la ligne/le nœud disponible suivant dans le document source.

    Tableau 4. Paramètres
    Nom Type Description
    Aucun
    Tableau 5. Renvoie
    Type Description
    Booléen Marqueur indiquant s’il existe une ligne suivante valide à transformer.
    • true : ligne suivante valide
    • false : aucune ligne supplémentaire
    var results = []; 
    while (transformer.transform()) { 
      results.push(transformer.getRow());
    

    Sortie :

     {ticker: "Now", change_percentage: "0", close_price: "165.77 USD", summary: "Shares of Now closed at 165.77" }