Transformador - Com escopo, Global

  • Versão de lançamento: Zurich
  • Atualizado 31 de jul. de 2025
  • 4 min. de leitura
  • . Transformador A API fornece métodos para analisar e transformar conteúdo de origem JSON estruturado ou XML em saída de par de chave-valor estruturado, usando um conjunto definido de regras.

    Esta API funciona junto com TransformerDefinition e. TransformerRuleList APIs. Juntas, essas APIs transformam nós XML ou qualquer entidade em um documento JSON estruturado em uma saída de pares nome-valor. Entidades JSON compatíveis, incluindo objetos e elementos em uma matriz, como cadeias de caracteres, números e outras matrizes.

    • . TransformerRuleList A API permite que você crie listas de regras de transformação que definem quais dados no documento de origem serão incluídos na saída e como transformar os dados de origem.

    • . TransformerDefinition A API associa uma lista de regras de transformação a um caminho de registro JSON/XML para definir objetos de definição de transformação reutilizáveis. Você pode usar um objeto de definição de transformação para transformar um ou mais documentos de origem.

    • . Transformador A API executa a transformação de dados real, uma entidade de dados por vez, usando a lista de regras de transformação especificada para criar os dados de saída desejados.

    Você pode usar Transformador em scripts de servidor com escopo e global. Ao usar esta classe, use sn_tfrm identificador de namespace. Para que esta API esteja disponível em uma instância, você deve ativar o plug-in do Serviço de transformação (com.glide.transform).

    O exemplo a seguir ilustra como usar o. TransformerRuleList API para definir as regras de transformação, o. TransformerDefinition API para definir os critérios de transformação e Transformador API para realmente executar a transformação.

    Este exemplo de código recupera um documento de detalhes de estoque baseado em JSON externo, cria regras para transformar esses dados em uma tabela tabular e transforma o documento de origem, uma linha de cada vez. A seguir está um snippet do documento de origem JSON que está sendo transformado:

    {
      "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());
    } 

    Saída:

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

    Transformer - Transformador (Object transformer Definition, documento de cadeia de caracteres)

    Instancia um objeto transformador (construtor).

    Tabela 1. Parâmetros
    Nome Tipo Descrição
    Transformer Definition Objeto Objeto que descreve a transformação de conteúdo; inclui lista de regras e caminho de registro JSONPath/XPath.

    Use TransformerRuleList() e. TransformerDefinition() APIs para gerar este objeto.

    documento Cadeia de caracteres Documento de origem a ser traduzido.
    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());
    }

    Transformador - getRow()

    Retorna a linha resultante da última transformação (ou nulo se não houver linha).

    Tabela 2. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 3. Retorna
    Tipo Descrição
    Objeto Objeto que contém uma linha/nó de dados transformado.
    var results = []; 
    while (transformer.transform()) { 
      results.push(transformer.getRow());
    

    Saída:

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

    Transformer - Transform()

    Transforma o próximo disponível linha/nó no documento de origem.

    Tabela 4. Parâmetros
    Nome Tipo Descrição
    Nenhum
    Tabela 5. Retorna
    Tipo Descrição
    Booliano Sinalizador que indica se há uma próxima linha válida para transformar.
    • Verdadeiro: Próxima linha válida
    • Falso: Não há linhas adicionais
    var results = []; 
    while (transformer.transform()) { 
      results.push(transformer.getRow());
    

    Saída:

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