Transformer – Scoped, Global
Die Umwandler Die API bietet Methoden zum Analysieren und Transformieren von strukturierten JSON- oder XML-Quellinhalten in eine strukturierte Schlüssel-Wert-Paarausgabe mithilfe eines definierten Regelsatzes.
Diese API funktioniert zusammen mit TransformerDefinition Und TransformerRuleList APIs. Zusammen transformieren diese APIs XML-Knoten oder eine beliebige Entität in einem strukturierten JSON-Dokument in eine Ausgabe von Name-Wert-Paaren. Unterstützte JSON-Entitäten, einschließlich Objekten und Elementen in einem Array, z. B. Zeichenfolgen, Zahlen und andere Arrays.
Die TransformerRuleList Mit der API können Sie Transformationsregellisten erstellen, die definieren, welche Daten im Quelldokument in die Ausgabe aufgenommen werden sollen und wie die Quelldaten transformiert werden.
Die TransformerDefinition Die API ordnet eine Transformationsregelliste einem JSON/XML-Datensatzpfad zu, um wiederverwendbare Transformationsdefinitionsobjekte zu definieren. Sie können ein Transformationsdefinitionsobjekt verwenden, um ein oder mehrere Quelldokumente zu transformieren.
Die Umwandler Die API führt die tatsächliche Datentransformation durch, jeweils eine Datenentität, und verwendet die angegebene Transformationsregelliste, um die gewünschten Ausgabedaten zu erstellen.
Sie können verwenden Umwandler Klasse in bereichsbezogenen und globalen Serverskripts. Wenn Sie diese Klasse verwenden, verwenden Sie sn_tfrm Namespace-Bezeichner. Bevor diese API in einer Instanz verfügbar ist, müssen Sie das Plugin „Transformationsservice“ (com.Glide.transform) aktivieren.
Das folgende Beispiel veranschaulicht die Verwendung von TransformerRuleList API zum Definieren der Transformationsregeln, der TransformerDefinition API zum Definieren der Transformationskriterien und des Umwandler API zur tatsächlichen Durchführung der Transformation.
Dieses Codebeispiel ruft ein externes JSON-basiertes Bestandsdetaildokument ab, erstellt Regeln für die Umwandlung dieser Daten in eine tabellarische Tabelle und transformiert dann das Quelldokument jeweils eine Zeile. Es folgt ein Fragment des JSON-Quelldokuments, das transformiert wird:
{
"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());
}
Ausgabe:
{ticker: "Now", change_percentage: "0", close_price: "165.77 USD", summary: "Shares of Now closed at 165.77" }
Umwandler: Umwandler (Object transformerDefinition, Zeichenfolgendokument)
Instanziiert ein Transformatorobjekt (Konstruktor).
| Name | Typ | Beschreibung |
|---|---|---|
| TransformerDefinition | Objekt | Objekt, das die Inhaltstransformation beschreibt; enthält Regelliste und JSONPath/XPath-Datensatzpfad. Verwenden Sie TransformerRuleList() Und TransformerDefinition() APIs zum Generieren dieses Objekts. |
| Dokument | Zeichenfolge | Zu übersetzendes Quelldokument. |
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());
}
Umwandler – getRow()
Gibt die resultierende Zeile zurück Aus der letzten Transformation (oder null, wenn keine Zeile vorhanden ist).
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Objekt | Objekt, das eine transformierte Zeile/einen transformierten Datenknoten enthält. |
var results = [];
while (transformer.transform()) {
results.push(transformer.getRow());
Ausgabe:
{ticker: "Now", change_percentage: "0", close_price: "165.77 USD", summary: "Shares of Now closed at 165.77" }
Umwandler – transform()
Transformiert die nächste verfügbare Zeile/Knoten Im Quelldokument.
| Name | Typ | Beschreibung |
|---|---|---|
| Keine |
| Typ | Beschreibung |
|---|---|
| Boolean | Kennzeichnung, die angibt, ob eine gültige nächste Zeile zum Transformieren vorhanden ist.
|
var results = [];
while (transformer.transform()) {
results.push(transformer.getRow());
Ausgabe:
{ticker: "Now", change_percentage: "0", close_price: "165.77 USD", summary: "Shares of Now closed at 165.77" }