Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Pegar campos específicos do objeto

Olá, preciso pegar campos específicos de um objeto Json, por exemplo:

{name : "João", idade : "35", ec : "Solteiro"}

preciso pegar só o name via URL assim:

localhost:9000/?fields=name

return Json:

{name : "João"}

Preciso saber como criar essa rota e como receber uma lista com campos informados pelo cliente que consumir o serviço, podem ser mais de um campo e quero devolver em um GET apenas os campos informados.

Alguém pode me ajudar?

6 respostas
solução!

Ola, Isaias Morona !

Um exemplo:

@Path("/teste")
@ApplicationScoped
public class TesteWS {

    @GET
        @Path("/nome")
    @Produces("application/json")
    public String find() String inicio, @PathParam("fim") String fim) {
        // Sua logica para montar o JSON somente com o nome
        String nomeJson = montaNomeJson();
        return nomeJson;
    }
}

Uma possível URL.

http://localhost:8080/SEU_PROJETO/CAMINHO_DEFINIDO_NO_APPLICATIONS/teste/nome

Ou a duvida é sobre qual biblioteca usar para gerar o JSON ?

Abraço!

Olá Cristiano,

Então, na verdade preciso que sejam informados qualquer campo, esse exemplo tem apenas 3 campos, mas em um objeto com uns 20 campos por exemplo, podem haver muitas combinações de campos, seria muito trabalhoso prever cada combinação entende?

Queria um GET onde o cliente possa informar quais campos ele quer receber na resposta.

Isaias,

Você precisa informar quais campos vc precisa que seu WS retorne e esse retorno pode ser variado ?

Seria isso ?

Isso mesmo.

Isaias,

A parte do retorno ficou claro ?

Monta um método que executa alguma logica e monta o JSON de acordo com a necessidade:

Ex.:

{"nome": "Isaias"} ou {"cor": "Azul", "marca" : "Adidas"} e por aí vai...

Agora, poderia explicar um pouco melhor sua necessidade, não entendi como vc precisa passar essas informações.

O que penso é que talvez seja legal passar um JSON com os campos que vc precisa que retorne.

Exemplo:

{"campos" : [ "nome", "cor", "idade", "status" ]} ou
{"campos" : [ "valor", "validade",]} e por aí vai...

No seu metodo, após receber esse JSON, vc abre ele e monta uma logica para montar seu novo JSON somente com os campos informados.

Essa seria uma ideia, ajudaria no seu caso? =0)

Então, preciso de algo assim:

GET /professionals params q: Busca RETURN Lista de profissionais que contenham o texto passado em qualquer um dos seus atributos. fields: List RETURN Lista de profissionais apenas com os fields passados.

  • Vou ter um GET
  • Na URL preciso definir quais campos dessa entidade eu preciso retornar.
  • Então vou retornar uma lista de professionals que atendem aos requisitos que eu também passar nessa URL.

Exemplo de URL: /professionals/joao?fields=name

No exemplo acima eu quero que retorne uma lista de names que contenha joao. Poderia retornar mais campos como idade, data de nascimento, contato, etc..