Respondido

Concatenar itens de API


Pessoal, nunca consegui concatenar itens de um JSON.

Geralmente preciso fazer isso quando o cliente tem mais de um contrato, mais de um boleto…


Por exemplo, se eu quissese demonstrar dois códigos de contrato para o cliente separadamente para que ele possa escolher entre um e outro, como eu poderia fazer?


Tem caso que somente haverá um código, ou três, etc… É um item dinâmico.


{
"status": "200",
"session": "425159b516a095156e12837889d9663f",
"msg": "",
"data": [
{
"id_contrato_con": "3579"
},
{
"id_contrato_con": "2982"
}
],
"executiontime": "0.9336s"
}

Exemplo para mostrar para o cliente:



  1. Contrato 3579

  2. Contrato 2982

icon

Melhor resposta por Bruno_Gabriel 22 July 2022, 15:38

Veja o original

10 comentários

Crachá

Olá Bruno! Temos várias formas de fazer isso!


Uma que considero interessante para o seu caso e até mesmo outros tipos de mensagem é utilizar o application/vnd.lime.collection+json.


Supondo que você tenha esse json armazenado em uma variável de nome contracts.


Crie um script na ação de entrada cuja variável de entrada seja contracts e saída seja msg.


Depois, coloque o código a seguir:


const run = (contracts) => {
const INITIAL_MSG = "Sobre qual contrato estamos falando?\n"

contracts = JSON.parse(contracts);

let items = [contracts.data.reduce((fullMsg, contract, index) => {
return `${fullMsg}\n${index+1}. Contrato ${contract.id_contrato_con}`
}, INITIAL_MSG)];

return {
"itemType": "text/plain",
"items": items
};
}

Como o script está na ação de entrada, será possível utilizar seu retorno como mensagem para o usuário e para isso, crie o conteúdo dinâmico:


image



O resultado será esse aqui:


image


Espero ter ajudado! Qualquer dúvida é só sinalizar por aqui 😉

@Arthur.Machado, geralmente esse meu retorno da API tem mais itens.


Como posso fazer um script para ele guardar os valores de contrato?

No caso tenho que fazer um parse, porém teria que pegar o número de itens automaticamente.

Crachá

Quando você fizer a chamada na sua API e o retorno for igual ao JSON que você mencionou, esse script irá se adequar a quantos itens for necessário (e isso é um cuidado que você deve ter, inclusive).

@BrunoC, fiz alguns testes e percebi que o script funciona seu eu fizer em algum playground com Node.JS e dentro do BliP não funciona, sabe o motivo?


function run(resposta) {

var json = JSON.parse(resposta);

var aux = "";

var count = 1;
json.data.forEach(function (element) {
aux = aux.concat(count, " - ", "Data: ", element.id_contrato_con, "\n");
count++;
})
return aux;

}

O problema só ocorre quando eu uso o JSON completo da minha requisição.


O JSON abaixo: (Removi os dados, então vai ficar inválido)


{
"status"
"session"
"msg"
"data"
{
"id_administradora_adm"
"st_nome_adm"
"st_email_adm"
"st_responsavel_adm"
"st_telefone_adm"
"st_endereco_adm"
"st_complemento_adm"
"st_numero_adm"
"st_cidade_adm"
"st_estado_adm"
"st_cep_adm"
"st_bairro_adm"
"st_observacao_adm"
"fl_status_adm"
"id_favorecido_fav"
"id_sacado_sac"
"st_identificadorimportacao_adm"
"id_condominio_cond"
"st_nome_cond"
"encargos_imoveis"
{
"id_encargos_imoe"
"id_imovel_imoe"
"nm_categoria_imoe"
"id_servicoencargo_imoe"
"st_codigoencargo_imoe"
"nm_debitoencargo_imoe"
"nm_creditoencargo_imoe"
"id_fornecedorencargo_imoe"
"tx_fracaoencargo_imoe"
"nm_formapagamentoencargo_imoe"
"nm_tipoencargo_imoe"
"nm_parcelasencargo_imoe"
"vl_valortotaldoencargo_imoe"
"vl_valoravistaencargo_imoe"
"fl_lancarencargoautomatico_imoe"
"fl_encargoincidenataxa_imoe"
"nm_diavencimento_imoe"
"st_observacaoencargo_imoe"
},
{
"id_encargos_imoe"
"id_imovel_imoe"
"nm_categoria_imoe"
"id_servicoencargo_imoe"
"st_codigoencargo_imoe"
"nm_debitoencargo_imoe"
"nm_creditoencargo_imoe"
"id_fornecedorencargo_imoe"
"tx_fracaoencargo_imoe"
"nm_formapagamentoencargo_imoe"
"nm_tipoencargo_imoe"
"nm_parcelasencargo_imoe"
"vl_valortotaldoencargo_imoe"
"vl_valoravistaencargo_imoe"
"fl_lancarencargoautomatico_imoe"
"fl_encargoincidenataxa_imoe"
"nm_diavencimento_imoe"
"st_observacaoencargo_imoe"
}
],
"imoveis_garagens"
{
"id_garagem_imog"
"id_imovel_imo"
"st_identificacao_imog"
"st_observacao_imog"
}
],
"imoveis_gestores"
"id_imovel_imo"
"st_tipo_imo"
"st_endereco_imo"
"st_identificador_imo"
"st_complemento_imo"
"st_bairro_imo"
"st_numero_imo"
"st_cep_imo"
"st_cidade_imo"
"st_estado_imo"
"st_observacao_imo"
"st_areatotal_imo"
"vl_venda_imo"
"st_condominio_imo"
"st_tipodimob_imo"
"nm_meseslocacao_imo"
"fl_tipoisencao_imo"
"dt_entrada_imo"
"id_filial_fil"
"st_nome_fil"
"st_razaosocial_fil"
"id_seguradora_seg"
"st_nome_seg"
"st_telefone_seg"
"st_email_seg"
"st_responsavel_seg"
"st_observacao_seg"
"inquilinos"
{
"id_sacado_sac"
"st_fantasia_pes"
"st_endereco_pes"
"st_numero_pes"
"st_complemento_pes"
"st_cidade_pes"
"st_estado_pes"
"st_cep_pes"
"st_bairro_pes"
"st_cnpj_pes"
"st_orgao_pes"
"dt_expedicaorg_pes"
"st_rg_pes"
"st_nacionalidade_pes"
"st_naturalidade_pes"
"st_estadocivil_pes"
"st_profissao_pes"
"st_email_pes"
"st_telefone_pes"
"st_celular_pes"
"st_nomeresp_pes"
"dt_nascimento_pes"
"st_sexo_pes"
"st_nome_coj"
"st_cpf_coj"
"fl_statusconvitecartao_pes"
"st_razaoempresa_pes"
"id_contrato_con"
"id_pessoa_pes"
"fl_principal_inq"
"nm_fracao_inq"
"st_nomeinquilino"
"st_nomeinquilino_formatado"
}
],
"id_contrato_con"
"id_tipo_con"
"dt_inicio_con"
"dt_fim_con"
"tx_adm_con"
"vl_aluguel_con"
"nm_diavencimento_con"
"id_indicereajuste_con"
"nm_txjuros_con"
"nm_txmulta_con"
"nm_txdesconto_con"
"tx_locacao_con"
"id_corretor_con"
"fl_garantia_con"
"fl_tipocaucaogarantia_con"
"st_descricaogarantia_con"
"st_identificadorgarantia_con"
"st_observacaogarantia_con"
"vl_valorgarantia_con"
"nm_diarepasse_con"
"nm_mesreajuste_con"
"dt_rescisao_con"
"fl_ativo_con"
"dt_garantiainicio_con"
"dt_garantiafim_con"
"fl_garantiaresponsavel_con"
"nm_garantiaparcelas_con"
"vl_garantiaparcela_con"
"dt_seguroincendioinicio_con"
"dt_seguroincendiofim_con"
"vl_seguroincendio_con"
"st_seguroincendiodescricao_con"
"st_seguroincendioidentificador_con"
"st_seguroincendioobservacao_con"
"fl_seguroincendio_con"
"nm_locacoesimovel_con"
"id_mensalidade_mens"
"fl_endcobranca_con"
"st_cep_con"
"st_endereco_con"
"st_numero_con"
"st_complemento_con"
"st_bairro_con"
"st_cidade_con"
"dt_ultimoreajuste_con"
"st_estado_con"
"fl_txadmvalorfixo_con"
"fl_txlocacaovalorfixo_con"
"nm_parcelastxlocacao_con"
"nm_repassegarantido_con"
"fl_cobrarnosegundoaluguel_con"
"id_primeiraparcela_con"
"fl_reterir_con"
"st_label_mens"
"fl_emitirnotafiscal_con"
"id_contabanco_cb"
"fl_mesvencido_con"
"fl_diafixorepasse_con"
"st_clausulas_con"
"dt_faturamento_con"
"tx_multacontratual_con"
"vl_tarifabancariarepasse_con"
"fl_tarifabancariarepasse_con"
"id_txbancaria_mens"
"fl_cobrartxbancaria_con"
"id_endereco_sen"
"fl_status_con"
"fl_tipoentrega_con"
"fl_suspenso_con"
"fl_dimob_con"
"dt_desocupacao_con"
"st_atividadecomercial_con"
"fl_txlocacao_con"
"dt_renovacao_con"
"fl_irdeduzirtxadm_con"
"nm_carencia_con"
"id_seguro_seg"
"fl_mesfechado_con"
"dt_cadastro_con"
"fl_split_con"
"fl_contratodigital_con"
"id_arquivo_arq"
"st_observacaorecisao_con"
"st_observacao_con"
"vl_importanciaseguradaincendio_con"
"vl_premioseguroincendio_con"
"st_motivopausa_con"
"dt_ultimapausa_con"
"nm_parcelasseguroincendio_con"
"id_seguradorafianca_con"
"id_forma_pag"
"fl_locacaodigital_con"
"dt_previsaodesocupacao_con"
"dt_sincronizacaofaturamento_con"
"st_linkpropostaexterna_con"
"st_propostaexterna_con"
"nm_mesesisencaomulta_con"
"dt_ocupacao_con"
"id_agentecomercial_con"
"fl_tiporepassegarantido_con"
"id_contarepasse_con"
"dt_atualizacao_con"
"fl_tipoatividade_con"
"dt_entregachaves_con"
"fl_responsavelcontrato_con"
"st_seguroincendioplanocontrato_con"
"id_gerente_con"
"fl_motivorescisao_con"
"id_garantia_grt"
"st_cotacao_grt"
"fl_reterjurosemulta_con"
"fl_multisplit_con"
"st_outromotivo_con"
"acesso_geral"
"codigo_contrato"
"imovel_formatado"
"st_imovel_imo"
"detalhes_contrato"
"nm_garagens_imovel"
"nm_hobbyboxs_imovel"
"fl_isencaomulta_con"
"proprietarios_beneficiarios"
{
"st_fantasia_pes"
"st_nome_pes"
"st_cnpj_pes"
"st_orgao_pes"
"dt_expedicaorg_pes"
"st_rg_pes"
"st_nacionalidade_pes"
"st_naturalidade_pes"
"st_estadocivil_pes"
"st_profissao_pes"
"st_endereco_pes"
"dt_nascimento_pes"
"st_numero_pes"
"st_bairro_pes"
"st_cidade_pes"
"st_estado_pes"
"st_nomeresp_pes"
"st_email_pes"
"st_celular_pes"
"st_telefone_pes"
"id_formarecebimento_frp"
"st_banco_frp"
"st_agenciabanco_frp"
"st_conta_frp"
"st_tipoconta_frp"
"st_nomerecebedor_frp"
"st_cnpjrecebedor_frp"
"id_pessoa_pes"
"id_forma_for"
"st_operacao_frp"
"vl_tarifabancaria_frp"
"dt_diarepasse_frp"
"id_imovel_imo"
"nm_fracao_prb"
"fl_principal_prb"
"fl_proprietario_prb"
"id_propsplit_pst"
"nm_fracao_rcb"
"id_proprietario_pes"
"id_usuario_usu"
"dt_alteracao_prb"
"nome_proprietario_formatado"
}
],
"nome_proprietario"
},
{
"id_administradora_adm"
"st_nome_adm"
"st_email_adm"
"st_responsavel_adm"
"st_telefone_adm"
"st_endereco_adm"
"st_complemento_adm"
"st_numero_adm"
"st_cidade_adm"
"st_estado_adm"
"st_cep_adm"
"st_bairro_adm"
"st_observacao_adm"
"fl_status_adm"
"id_favorecido_fav"
"id_sacado_sac"
"st_identificadorimportacao_adm"
"id_condominio_cond"
"st_nome_cond"
"imoveis_garagens"
{
"id_garagem_imog"
"id_imovel_imo"
"st_identificacao_imog"
"st_observacao_imog"
}
],
"imoveis_gestores"
"id_imovel_imo"
"st_tipo_imo"
"st_endereco_imo"
"st_identificador_imo"
"st_complemento_imo"
"st_bairro_imo"
"st_numero_imo"
"st_cep_imo"
"st_cidade_imo"
"st_estado_imo"
"st_observacao_imo"
"st_areatotal_imo"
"vl_venda_imo"
"st_condominio_imo"
"st_tipodimob_imo"
"nm_meseslocacao_imo"
"fl_tipoisencao_imo"
"dt_entrada_imo"
"id_filial_fil"
"st_nome_fil"
"st_razaosocial_fil"
"id_seguradora_seg"
"st_nome_seg"
"st_telefone_seg"
"st_email_seg"
"st_responsavel_seg"
"st_observacao_seg"
"inquilinos"
{
"id_sacado_sac"
"st_fantasia_pes"
"st_endereco_pes"
"st_numero_pes"
"st_complemento_pes"
"st_cidade_pes"
"st_estado_pes"
"st_cep_pes"
"st_bairro_pes"
"st_cnpj_pes"
"st_orgao_pes"
"dt_expedicaorg_pes"
"st_rg_pes"
"st_nacionalidade_pes"
"st_naturalidade_pes"
"st_estadocivil_pes"
"st_profissao_pes"
"st_email_pes"
"st_telefone_pes"
"st_celular_pes"
"st_nomeresp_pes"
"dt_nascimento_pes"
"st_sexo_pes"
"st_nome_coj"
"st_cpf_coj"
"fl_statusconvitecartao_pes"
"st_razaoempresa_pes"
"id_contrato_con"
"id_pessoa_pes"
"fl_principal_inq"
"nm_fracao_inq"
"st_nomeinquilino"
"st_nomeinquilino_formatado"
}
],
"id_contrato_con"
"id_tipo_con"
"dt_inicio_con"
"dt_fim_con"
"tx_adm_con"
"vl_aluguel_con"
"nm_diavencimento_con"
"id_indicereajuste_con"
"nm_txjuros_con"
"nm_txmulta_con"
"nm_txdesconto_con"
"tx_locacao_con"
"id_corretor_con"
"fl_garantia_con"
"fl_tipocaucaogarantia_con"
"st_descricaogarantia_con"
"st_identificadorgarantia_con"
"st_observacaogarantia_con"
"vl_valorgarantia_con"
"nm_diarepasse_con"
"nm_mesreajuste_con"
"dt_rescisao_con"
"fl_ativo_con"
"dt_garantiainicio_con"
"dt_garantiafim_con"
"fl_garantiaresponsavel_con"
"nm_garantiaparcelas_con"
"vl_garantiaparcela_con"
"dt_seguroincendioinicio_con"
"dt_seguroincendiofim_con"
"vl_seguroincendio_con"
"st_seguroincendiodescricao_con"
"st_seguroincendioidentificador_con"
"st_seguroincendioobservacao_con"
"fl_seguroincendio_con"
"nm_locacoesimovel_con"
"id_mensalidade_mens"
"fl_endcobranca_con"
"st_cep_con"
"st_endereco_con"
"st_numero_con"
"st_complemento_con"
"st_bairro_con"
"st_cidade_con"
"dt_ultimoreajuste_con"
"st_estado_con"
"fl_txadmvalorfixo_con"
"fl_txlocacaovalorfixo_con"
"nm_parcelastxlocacao_con"
"nm_repassegarantido_con"
"fl_cobrarnosegundoaluguel_con"
"id_primeiraparcela_con"
"fl_reterir_con"
"st_label_mens"
"fl_emitirnotafiscal_con"
"id_contabanco_cb"
"fl_mesvencido_con"
"fl_diafixorepasse_con"
"st_clausulas_con"
"dt_faturamento_con"
"tx_multacontratual_con"
"vl_tarifabancariarepasse_con"
"fl_tarifabancariarepasse_con"
"id_txbancaria_mens"
"fl_cobrartxbancaria_con"
"id_endereco_sen"
"fl_status_con"
"fl_tipoentrega_con"
"fl_suspenso_con"
"fl_dimob_con"
"dt_desocupacao_con"
"st_atividadecomercial_con"
"fl_txlocacao_con"
"dt_renovacao_con"
"fl_irdeduzirtxadm_con"
"nm_carencia_con"
"id_seguro_seg"
"fl_mesfechado_con"
"dt_cadastro_con"
"fl_split_con"
"fl_contratodigital_con"
"id_arquivo_arq"
"st_observacaorecisao_con"
"st_observacao_con"
"vl_importanciaseguradaincendio_con"
"vl_premioseguroincendio_con"
"st_motivopausa_con"
"dt_ultimapausa_con"
"nm_parcelasseguroincendio_con"
"id_seguradorafianca_con"
"id_forma_pag"
"fl_locacaodigital_con"
"dt_previsaodesocupacao_con"
"dt_sincronizacaofaturamento_con"
"st_linkpropostaexterna_con"
"st_propostaexterna_con"
"nm_mesesisencaomulta_con"
"dt_ocupacao_con"
"id_agentecomercial_con"
"fl_tiporepassegarantido_con"
"id_contarepasse_con"
"dt_atualizacao_con"
"fl_tipoatividade_con"
"dt_entregachaves_con"
"fl_responsavelcontrato_con"
"st_seguroincendioplanocontrato_con"
"id_gerente_con"
"fl_motivorescisao_con"
"id_garantia_grt"
"st_cotacao_grt"
"fl_reterjurosemulta_con"
"fl_multisplit_con"
"st_outromotivo_con"
"acesso_geral"
"codigo_contrato"
"imovel_formatado"
"st_imovel_imo"
"detalhes_contrato"
"nm_garagens_imovel"
"nm_hobbyboxs_imovel"
"fl_isencaomulta_con"
"proprietarios_beneficiarios"
{
"st_fantasia_pes"
"st_nome_pes"
"st_cnpj_pes"
"st_orgao_pes"
"dt_expedicaorg_pes"
"st_rg_pes"
"st_nacionalidade_pes"
"st_naturalidade_pes"
"st_estadocivil_pes"
"st_profissao_pes"
"st_endereco_pes"
"dt_nascimento_pes"
"st_numero_pes"
"st_bairro_pes"
"st_cidade_pes"
"st_estado_pes"
"st_nomeresp_pes"
"st_email_pes"
"st_celular_pes"
"st_telefone_pes"
"id_formarecebimento_frp"
"st_banco_frp"
"st_agenciabanco_frp"
"st_conta_frp"
"st_tipoconta_frp"
"st_nomerecebedor_frp"
"st_cnpjrecebedor_frp"
"id_pessoa_pes"
"id_forma_for"
"st_operacao_frp"
"vl_tarifabancaria_frp"
"dt_diarepasse_frp"
"id_imovel_imo"
"nm_fracao_prb"
"fl_principal_prb"
"fl_proprietario_prb"
"id_propsplit_pst"
"nm_fracao_rcb"
"id_proprietario_pes"
"id_usuario_usu"
"dt_alteracao_prb"
"nome_proprietario_formatado"
}
],
"nome_proprietario"
}
],
"executiontime"
}
Reputação 7

@Bruno provavelmente porque o elemento JSON é muito grande. Para fins de teste, confirme se o JSON está chegando inteiro no Blip - ele costuma cortar elementos maiores que um certo tamanho.


Além disso, se não me engano, o Blip só permite um número limitado de iterações, por uma questão de segurança. Então, mesmo que o JSON esteja completo, se ele precisar iterar (através do seu forEach) pode ser que dê algum problema. Mas vamos checar primeiro a “integridade” do JSON heehe


É, eu tava passando o JSON direto com uma variável e aparentemente no debug tá cortando.

Como eu poderia resolver isso? Um script para remover itens que não preciso?

Quer dizer, parece que não tá cortando não.


O erro do debug me trás: "SyntaxError: Unexpected token 'fa'"


Encontrei o problema.

Tem algumas linhas que trás código HTML dentro de aspas, tirei e foi.


@BrunoC, tem como eu remover itens especificos de JSON através de um script? Item e valor, no caso.

Por que o valor em HTML sempre vem diferente a cada requisição.

Solucionado:


function run (numeroDocumento){
numeroDocumento = numeroDocumento.replace(/<[^>]*>/gm, "");
return numeroDocumento;
}

Comente