Web Service Return is a string, how can I query the data?

2

I'm consuming a Web Service, it follows the JAVA code (JSP):

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>

<%-- start web service invocation --%><hr/>
<%
try {
com.totvs.framework.ws.execbo.service.WebServiceExecBO service = new com.totvs.framework.ws.execbo.service.WebServiceExecBO();
com.totvs.framework.ws.execbo.service.ExecBOServiceEndpoint port = service.getWebServiceExecBOPort();
 // TODO initialize WS operation arguments here

String user       = request.getParameter("centroCusto");
String token      = port.userLogin(user);
String path       = "dzp/teste001.p";
String procedure  = "ws-busca-ccusto";
String json       = "[{\"name\":\"tt-ccusto\",\"type\":\"output\",\"dataType\":\"temptable\",\"value\":{\"name\":\"tt-ccusto\",\"fields\":[{\"name\":\"cod-ccusto\", \"label\":\"codccusto\",\"type\":\"character\"},{\"name\":\"descricao\",  \"label\":\"descricao\",\"type\":\"character\"}],\"records\":[]}}]";

// TODO process result here
java.lang.String result = port.callProcedureWithToken(token, path, procedure, json);
out.println("Result = "+result);
} catch (Exception ex) {
// TODO handle custom exceptions here
    out.println("ERROR = "+ex);
}
%>
<%-- end web service invocation --%><hr/>

Which returns a list of cost centers:

Result = [{"dataType":"temptable","name":"tt-ccusto","value":"{\"records\":[{\"descricao\":\"Exclusivo Cadastro de Itens\",\"cod-ccusto\":\"00000001\"},{\"descricao\":\"Administracao\",\"cod-ccusto\":\"10011001\"},{\"descricao\":\"(Desat.) - Administracao\",\"cod-ccusto\":\"10011999\"},{\"descricao\":\"Tecnologia da Informacao\",\"cod-ccusto\":\"10111001\"},{\"descricao\":\"Recursos Humanos\",\"cod-ccusto\":\"10211001\"},{\"descricao\":\"(Desat.) - Seguranca do Trabalho\",\"cod-ccusto\":\"10211002\"},{\"descricao\":\"Ambulatorio\",\"cod-ccusto\":\"10211003\"},{\"descricao\":\"Afastados\",\"cod-ccusto\":\"10211004\"},{\"descricao\":\"Aprendiz \\/ Senai\",\"cod-ccusto\":\"10211005\"},{\"descricao\":\"Controladoria\",\"cod-ccusto\":\"10311001\"},{\"descricao\":\"Financeiro\",\"cod-ccusto\":\"10311002\"},{\"descricao\":\"Fiscal\",\"cod-ccusto\":\"10311003\"},{\"descricao\":\"Logistica\",\"cod-ccusto\":\"10411001\"},{\"descricao\":\"Compras\",\"cod-ccusto\":\"10411002\"},{\"descricao\":\"(Desat.) - Almoxarifado Geral\",\"cod-ccusto\":\"10411998\"},{\"descricao\":\"(Desat.) - Expedicao\",\"cod-ccusto\":\"10411999\"},{\"descricao\":\"Vendas\",\"cod-ccusto\":\"10511001\"},{\"descricao\":\"(Desat.) - Vendas\",\"cod-ccusto\":\"10511998\"},{\"descricao\":\"(Desat.) - Vendas\",\"cod-ccusto\":\"10511999\"},{\"descricao\":\"Juridico\",\"cod-ccusto\":\"10611001\"},{\"descricao\":\"Administracao da Producao\",\"cod-ccusto\":\"23121001\"},{\"descricao\":\"Planejamento e Controle da Producao-Fixo\",\"cod-ccusto\":\"23121002\"},{\"descricao\":\"Expedicao\",\"cod-ccusto\":\"23121003\"},{\"descricao\":\"Almoxarifado\",\"cod-ccusto\":\"23121004\"},{\"descricao\":\"Seguranca do Trabalho\",\"cod-ccusto\":\"23121005\"},{\"descricao\":\"(Desat.) - Producao Fixo\",\"cod-ccusto\":\"23121998\"},{\"descricao\":\"(Desat.) - Producao Fixo\",\"cod-ccusto\":\"23121999\"},{\"descricao\":\"Manutencao Fabril - Fixo\",\"cod-ccusto\":\"23221001\"},{\"descricao\":\"Manutencao Patrimonial - Fixo\",\"cod-ccusto\":\"23221002\"},{\"descricao\":\"Manutencao Automacao - Fixo\",\"cod-ccusto\":\"23221003\"},{\"descricao\":\"Ferramentaria - Fixo\",\"cod-ccusto\":\"23321001\"},{\"descricao\":\"(Desat.) - Matrizaria Fixo\",\"cod-ccusto\":\"23321999\"},{\"descricao\":\"Ferramentaria - Variavel\",\"cod-ccusto\":\"23322001\"},{\"descricao\":\"(Desat.) - Afiacao - Variavel\",\"cod-ccusto\":\"23322002\"},{\"descricao\":\"Gestao da Qualidade - Fixo\",\"cod-ccusto\":\"23421001\"},{\"descricao\":\"Engenharia de Pesquisa e Desenvol - Fixo\",\"cod-ccusto\":\"23521001\"},{\"descricao\":\"Engenharia de Produto - Fixo\",\"cod-ccusto\":\"23521002\"},{\"descricao\":\"Engenharia de Processos - Fixo\",\"cod-ccusto\":\"23521003\"},{\"descricao\":\"Laboratorio Metalurgico - Fixo\",\"cod-ccusto\":\"23521004\"},{\"descricao\":\"Laboratorio Testes Mecanicos\",\"cod-ccusto\":\"23521005\"},{\"descricao\":\"Desenvolvimento de Novos Produtos\",\"cod-ccusto\":\"23521006\"},{\"descricao\":\"(Desat.) - Engenharia Fixo\",\"cod-ccusto\":\"23521999\"},{\"descricao\":\"Corte - Fixo\",\"cod-ccusto\":\"25121001\"},{\"descricao\":\"Corte - Variavel\",\"cod-ccusto\":\"25132001\"},{\"descricao\":\"Forjarias - Fixo\",\"cod-ccusto\":\"25221001\"},{\"descricao\":\"(Desat.) - Forjaria II Custos Fixos\",\"cod-ccusto\":\"25221996\"},{\"descricao\":\"(Desat.) - Forjaria II Custos Fixos\",\"cod-ccusto\":\"25221997\"},{\"descricao\":\"(Desat.) - Forjaria II\",\"cod-ccusto\":\"25221998\"},{\"descricao\":\"(Desat.) - Forjaria I\",\"cod-ccusto\":\"25221999\"},{\"descricao\":\"(Desat.) - Forjaria II Grupo 21 - Variav\",\"cod-ccusto\":\"25232001\"},{\"descricao\":\"(Desat.) - Forjaria II Grupo 22 - Variav\",\"cod-ccusto\":\"25232002\"},{\"descricao\":\"(Desat.) - Forjaria II Grupo 31 - Variav\",\"cod-ccusto\":\"25232003\"},{\"descricao\":\"Forjaria II Grupo 34 - Variavel\",\"cod-ccusto\":\"25232004\"},{\"descricao\":\"Forjaria II Grupo 35 - Variavel\",\"cod-ccusto\":\"25232005\"},{\"descricao\":\"Forjaria II Grupo 38 - Variavel\",\"cod-ccusto\":\"25232006\"},{\"descricao\":\"Forjaria II Grupo 41 - Variavel\",\"cod-ccusto\":\"25232007\"},{\"descricao\":\"Forjaria II Grupo 51 - Variavel\",\"cod-ccusto\":\"25232008\"},{\"descricao\":\"Forjaria II Grupo 32 - Variavel\",\"cod-ccusto\":\"25232009\"},{\"descricao\":\"Grupo de Forjamento 42\",\"cod-ccusto\":\"25232010\"},{\"descricao\":\"Grupo de Forjamento 33\",\"cod-ccusto\":\"25232011\"},{\"descricao\":\"(Desat.) - Forjaria II Grupo 32 - Variav\",\"cod-ccusto\":\"25232997\"},{\"descricao\":\"(Desat.) - Forjaria II Grupo 33 - Variav\",\"cod-ccusto\":\"25232998\"},{\"descricao\":\"(Desat.) - Forjaria I Grupo 2 Variavel\",\"cod-ccusto\":\"25232999\"},{\"descricao\":\"Tratamento Termico - Fixo\",\"cod-ccusto\":\"25321001\"},{\"descricao\":\"Tratamento Termico - Variavel\",\"cod-ccusto\":\"25332001\"},{\"descricao\":\"Acabamento - Fixo\",\"cod-ccusto\":\"25421001\"},{\"descricao\":\"Acabamento - Variavel\",\"cod-ccusto\":\"25432001\"},{\"descricao\":\"Pintura - Fixo\",\"cod-ccusto\":\"25521001\"},{\"descricao\":\"Pintura - Variavel\",\"cod-ccusto\":\"25532001\"},{\"descricao\":\"Mini Fabrica - Fixo\",\"cod-ccusto\":\"25621001\"},{\"descricao\":\"(Desat.) - Usinagem Terceiro Ponto - Var\",\"cod-ccusto\":\"25632001\"},{\"descricao\":\"(Desat.) - Usin.Braco-Eixos e Mangas Eix\",\"cod-ccusto\":\"25632002\"},{\"descricao\":\"Usinagem de Esferas Agricolas - Var\",\"cod-ccusto\":\"25632003\"},{\"descricao\":\"Montagem de Conjuntos Tubulares - Variav\",\"cod-ccusto\":\"25632004\"},{\"descricao\":\"Montagem de Conjuntos Barras - Variavel\",\"cod-ccusto\":\"25632005\"},{\"descricao\":\"Usinagem Flange do Freio - Variavel\",\"cod-ccusto\":\"25632006\"},{\"descricao\":\"(Desat.) - Conj.Manga Eixo Variavel\",\"cod-ccusto\":\"25632998\"},{\"descricao\":\"(Desat.) - Conj.Eixo Dianteiro\",\"cod-ccusto\":\"25632999\"},{\"descricao\":\"Usinagem - Fixo\",\"cod-ccusto\":\"25721001\"},{\"descricao\":\"(Desat.) - Usinagem Custo Fixo\",\"cod-ccusto\":\"25721999\"},{\"descricao\":\"Usinagem Eixos - Variavel\",\"cod-ccusto\":\"25732001\"},{\"descricao\":\"Usinagem Flanges e Yokes - Variavel\",\"cod-ccusto\":\"25732002\"},{\"descricao\":\"Usinagem Eixo Longo - Variavel\",\"cod-ccusto\":\"25732003\"},{\"descricao\":\"Usinagem Ponta de Eixo - Variavel\",\"cod-ccusto\":\"25732004\"},{\"descricao\":\"Usinagem Bracos - Variavel\",\"cod-ccusto\":\"25732005\"},{\"descricao\":\"Usinagem Aneis - Variavel\",\"cod-ccusto\":\"25732006\"},{\"descricao\":\"(Desat.) - Usinagem Brochadeiras - Varia\",\"cod-ccusto\":\"25732007\"},{\"descricao\":\"(Desat.) - Usinagem Virabrequins - Varia\",\"cod-ccusto\":\"25732008\"},{\"descricao\":\"(Desat.) - Inducao - Variavel\",\"cod-ccusto\":\"25732009\"},{\"descricao\":\"Usinagem Trunnion - Variavel\",\"cod-ccusto\":\"25732010\"},{\"descricao\":\"Usinagem Diversos - Variavel\",\"cod-ccusto\":\"25732011\"},{\"descricao\":\"(Desat.)\",\"cod-ccusto\":\"25732995\"},{\"descricao\":\"(Desat.)\",\"cod-ccusto\":\"25732996\"},{\"descricao\":\"(Desat.) - Usinagem Pesada Variavel\",\"cod-ccusto\":\"25732997\"},{\"descricao\":\"(Desat.) - Usin.Geradora de Engrenagem\",\"cod-ccusto\":\"25732998\"},{\"descricao\":\"(Desat.) - Usinagem Eletroferragem\",\"cod-ccusto\":\"25732999\"},{\"descricao\":\"Rateio Lotacao\",\"cod-ccusto\":\"92000001\"},{\"descricao\":\"Rateio Horas de Producao\",\"cod-ccusto\":\"92000002\"},{\"descricao\":\"Rateio Energia Eletrica\",\"cod-ccusto\":\"92000003\"},{\"descricao\":\"Rateio Area Construida\",\"cod-ccusto\":\"92000004\"},{\"descricao\":\"Rateio Area Predio I\",\"cod-ccusto\":\"92000005\"},{\"descricao\":\"Rateio Predio H\",\"cod-ccusto\":\"92000006\"},{\"descricao\":\"Rateio Predio G\",\"cod-ccusto\":\"92000007\"},{\"descricao\":\"Rateio Predio F\",\"cod-ccusto\":\"92000008\"},{\"descricao\":\"Rateio Predio B\",\"cod-ccusto\":\"92000009\"},{\"descricao\":\"Rateio Gas Natural\",\"cod-ccusto\":\"92000010\"},{\"descricao\":\"Rateio Predio J\",\"cod-ccusto\":\"92000011\"},{\"descricao\":\"Rateio Predio 2\",\"cod-ccusto\":\"92000012\"},{\"descricao\":\"Rateio Lotacao por m²\",\"cod-ccusto\":\"92000013\"},{\"descricao\":\"Rateio Rampa da Lavagem\",\"cod-ccusto\":\"92000014\"},{\"descricao\":\"Rateio Vazao ETE\",\"cod-ccusto\":\"92000015\"},{\"descricao\":\"Execucao Orcamentaria\",\"cod-ccusto\":\"93000001\"},{\"descricao\":\"(Desat.) - Orcamentos\",\"cod-ccusto\":\"99999999\"},{\"descricao\":\"TESTE\",\"cod-ccusto\":\"10011999\"},{\"descricao\":\"ORCAMENTOS\",\"cod-ccusto\":\"99999999\"}],\"fields\":[{\"name\":\"cod-ccusto\",\"label\":\"codccusto\",\"type\":\"character\"},{\"name\":\"descricao\",\"label\":\"descricao\",\"type\":\"character\"}]}","type":"output"}]

Now, I would like to handle this data, for example: showing all descriptions of all cost centers. I thought about turning this String into an object or into a JSON to go through all the items in some way, but I'm not sure what I'm doing or how I should do it.

My question is: What is the most practical way to turn this String into something I can refer to?

According to user Renan's guidance, I adapted his code and it worked :

JSON.JSONObject object    = new JSON.JSONArray(result).getJSONObject(0);
JSON.JSONObject object2   = new JSON.JSONObject(object.getString("value"));
JSON.JSONArray arrayFinal = object2.getJSONArray("records");

for(int i = 0; i < arrayFinal.length(); i++){
    final String descricao = arrayFinal.getJSONObject(i).getString("descricao"), ccusto = arrayFinal.getJSONObject(i).getString("cod-ccusto");
    out.println(descricao + " - " + ccusto + "</br>");
}

I'll leave his answer as correct because it covers the question further.

    
asked by anonymous 15.12.2017 / 12:23

1 answer

0

If you have an object Record with the attributes descricao and codCusto , you can use Jackson or the Gson that allow you to map the JSON keys to the attributes of the class. In this question (en) there are some differences between them.

If you need a simple treatment, for example, just get the records array and iterate through the items, you can use JSON ( org.json) - there are other Java implementations in org.json , you can consult.

final String response = "[{\"dataType\":\"temptable\",\"name\":\"tt-ccusto\",\"value\":{\"records\":[{\"descricao\":\"Exclusivo Cadastro de Itens\",\"cod-ccusto\":\"00000001\"},{\"descricao\":\"Administracao\",\"cod-ccusto\":\"10011001\"},{\"descricao\":\"(Desat.) - Administracao\",\"cod-ccusto\":\"10011999\"},{\"descricao\":\"Tecnologia da Informacao\",\"cod-ccusto\":\"10111001\"},{\"descricao\":\"Recursos Humanos\",\"cod-ccusto\":\"10211001\"},{\"descricao\":\"(Desat.) - Seguranca do Trabalho\",\"cod-ccusto\":\"10211002\"},{\"descricao\":\"Ambulatorio\",\"cod-ccusto\":\"10211003\"},{\"descricao\":\"Afastados\",\"cod-ccusto\":\"10211004\"},{\"descricao\":\"Aprendiz \\\/ Senai\",\"cod-ccusto\":\"10211005\"},{\"descricao\":\"Controladoria\",\"cod-ccusto\":\"10311001\"},{\"descricao\":\"Financeiro\",\"cod-ccusto\":\"10311002\"},{\"descricao\":\"Fiscal\",\"cod-ccusto\":\"10311003\"},{\"descricao\":\"Logistica\",\"cod-ccusto\":\"10411001\"},{\"descricao\":\"Compras\",\"cod-ccusto\":\"10411002\"},{\"descricao\":\"(Desat.) - Almoxarifado Geral\",\"cod-ccusto\":\"10411998\"},{\"descricao\":\"(Desat.) - Expedicao\",\"cod-ccusto\":\"10411999\"},{\"descricao\":\"Vendas\",\"cod-ccusto\":\"10511001\"},{\"descricao\":\"(Desat.) - Vendas\",\"cod-ccusto\":\"10511998\"},{\"descricao\":\"(Desat.) - Vendas\",\"cod-ccusto\":\"10511999\"},{\"descricao\":\"Juridico\",\"cod-ccusto\":\"10611001\"},{\"descricao\":\"Administracao da Producao\",\"cod-ccusto\":\"23121001\"},{\"descricao\":\"Planejamento e Controle da Producao-Fixo\",\"cod-ccusto\":\"23121002\"},{\"descricao\":\"Expedicao\",\"cod-ccusto\":\"23121003\"},{\"descricao\":\"Almoxarifado\",\"cod-ccusto\":\"23121004\"}]}}]";

JSONObject object = new JSONArray(response).getJSONObject(0);

object.getJSONObject("value").getJSONArray("records").forEach(item -> {
   JSONObject record = (JSONObject) item;

   final String descricao = record.getString("descricao"),
                ccusto = record.getString("cod-ccusto");

   System.out.println("Descrição: " + descricao + " - Código: " + ccusto);
});

In your example, the array Result contains only one element, so I took the first (and in this case only) element by the index. Having the JSON object, just the value key and within it iterate over the elements (also JSONObject ) of records . The result will be this:

Descrição: Exclusivo Cadastro de Itens - Código: 00000001
Descrição: Administracao - Código: 10011001
Descrição: (Desat.) - Administracao - Código: 10011999
Descrição: Tecnologia da Informacao - Código: 10111001
Descrição: Recursos Humanos - Código: 10211001
Descrição: (Desat.) - Seguranca do Trabalho - Código: 10211002
Descrição: Ambulatorio - Código: 10211003
Descrição: Afastados - Código: 10211004
Descrição: Aprendiz \/ Senai - Código: 10211005
Descrição: Controladoria - Código: 10311001
Descrição: Financeiro - Código: 10311002
Descrição: Fiscal - Código: 10311003
Descrição: Logistica - Código: 10411001
Descrição: Compras - Código: 10411002
Descrição: (Desat.) - Almoxarifado Geral - Código: 10411998
Descrição: (Desat.) - Expedicao - Código: 10411999
Descrição: Vendas - Código: 10511001
Descrição: (Desat.) - Vendas - Código: 10511998
Descrição: (Desat.) - Vendas - Código: 10511999
Descrição: Juridico - Código: 10611001
Descrição: Administracao da Producao - Código: 23121001
Descrição: Planejamento e Controle da Producao-Fixo - Código: 23121002
Descrição: Expedicao - Código: 23121003
Descrição: Almoxarifado - Código: 23121004
    
15.12.2017 / 13:47