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

Asked

Viewed 352 times

2

I am consuming a Web Service , 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/>

That 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 treat this data, for example: showing all the descriptions of all cost centers. I thought about turning this String into an object or JSON to sort through all the items, but I’m not sure what I’m doing or how I should do it.

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

According to the guidance of the user Renan, I adapted his code and 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 will leave his answer as the correct one because it covers the question more.

  • You could create a class CentrosDeCusto with the attributes codigo and descricao and then use the GSON library to transform this JSON into objects in that class. See if this question help you!

  • About Gson, I didn’t find the package with the classes to put in netbeans.

  • 1

    Libs can be found here.

1 answer

0


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

If you need a simple treatment, for example, just get the array records and iterate through the items, you can use the JSON (org.json) - there are other Java implementations on org.json, 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) by the index. Having the JSON object, just the key value and within it iterate on 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
  • I ended up editing the question improving the JSON that returns me, it has some features that in the simple treatment I am having difficulty to solve. About Gson or Jackson, I didn’t find the package with the classes to put in netbeans.

  • I edited the question with what I did and what gives error (500 not found)

  • Haha the problem was in the foreach. I did it with for and it was good! Thanks for the help.

  • 1

    I have Linked the Github of both projects, if using Maven it is even easier to include dependencies. About forEach, I used this way because I answered based on Java 8. If you are using Java <=7 you need to iterate using same loops =)

Browser other questions tagged

You are not signed in. Login or sign up in order to post.