Hoje vamos ver sobre "como modificar atributos de payload". Sabemos que o ideal seria poder consumir os dados do payload de acordo como ele foi estruturado, porém em alguns casos vamos nos deparar com a necessidade de tratar aquele dado para atender o objetivo que ele será utilizado ou até mesmo por questão de padronização.
Mas antes de começar veja as dicas de ferramentas que podem ser utilizada até que você estruture e debug seu script.
Dicas de como testar antes de aplicar o script definitivo com o dado a ser tratado.
Dica 1: Use o Background Script.
Dica 2: Use o Xplore (Precisa baixar o .xml e subir/commit na sua PDI ) https://developer.servicenow.com/connect.do#!/share/contents/9650888_xplore_developer_toolkit?t=PRODUCT_DETAILS
Background Script - Crie seu script e debug.
Xplore - Crie seu script e debug.
Para tratar os dados do payload utilizei o Xplore
Exemplo 1 - Foi modificado o nome do primeiro atributo de: 1. symbol para: ticker e dos demais foram removidos todos os números+(.) mantendo o mesmo nome.
Exemplo 2 - Foi modificado todos atributos dentro do objeto, e como o payload vai repetir os atributos conforme o parâmetro enviado vs retorno do payload, foi utilizado o método .map para fazer a verificação e modificações necessárias.
Agora como fazer isso dento do Script include já que você provavelmente irá consumir dados de Web Server (Veja abaixo como ficou dentro do script include.)
Script Exemplo 1
quoteDataCompany: function(symbol) {
//chama função que retorna payload default da api consumida.
var companies = this.getCompanyQuote(symbol);
//var que recebe os dados tratados
var data = [];
//var que acessa os dados da cotação da compania dentro de "Global Quote"
var myObj = companies["Global Quote"];
//função para renomear valores com novos atributos
data = {
"ticker": myObj["01. symbol"],
"open": myObj["02. name"],
"high": myObj["03. high"],
"low": myObj["04. low"],
"price": myObj["05. price"],
"volume": myObj["06. volume"],
"latest trading day": myObj["07. latest trading day"],
"previous close": myObj["08. previous close"],
"change": myObj["09. change"],
"change percent": myObj["10. change percent"],
};
//Voce também pode acrescenta esse gs.log para validar dentro dos logs se
obteve o resultado esperado. Mas não esqueça de remover após testar ou deixar
comentado para não correr riscos de expor dados sensiveis.
//gs.log("#CompanyData "+JSON.stringify(data));
//retorna dados tratados.
return data;
},
Script Exemplo 2
companyData: function(keyword) {
//chama função que retorna payload default api consumida.
var companies = this.getCompanySearch(keyword);
//var que recebe os dados tratados
var data= [];
//var que acessa os dados da companias dentro de "bestMatches"
var myObj = companies.bestMatches;
//função para percorrer o objeto e renomear os novos atributos
data = myObj.map(function(item) {
return {
"ticker": item["1. symbol"],
"name": item["2. name"],
"type": item["3. type"],
"region": item["4. region"],
"marketOpen": item["5. marketOpen"],
"marketClose": item["6. marketClose"],
"timezone": item["7. timezone"],
"currency": item["8. currency"],
"matchScore": item["9. matchScore"],
};
});
//Voce também pode acrescenta esse gs.log para validar dentro dos logs
se obteve o resultado esperado. Mas não esqueça de remover após testar ou
deixar comentado para não correr riscos de expor dados sensiveis.
//gs.log("#CompanyData "+JSON.stringify(data));
//retorna dados tratados.
return data;
},
Nenhum comentário:
Postar um comentário