Problemas na serialização de um objeto

12 respostas
jsonajaxjavarest
W

Boa tarde, ainda estou com problemas na hora de serializar um Objeto, quando estou passando a Request, ele me retorna um TEXTO, e da um erro, segue o código e o erro que está gerando.
package br.com.festivalRest.rest.authentication;

import java.sql.Connection;
import java.util.ArrayList;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.core.Response;

import com.google.gson.Gson;

import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import br.com.festivalRest.bd.conexao.Conexao;
import br.com.festivalRest.jdbc.JDBCAuthenticationDAO;
import br.com.festivalRest.objetos.User;

@Path("authenticationRest")
public class AuthenticationRest extends UtilRest {

public AuthenticationRest(){
}

@POST
@Path("/searchUser")
@Consumes(MediaType.APPLICATION_JSON)
public Response foundUser(String usuarioParam){
    try{

        Conexao conec = new Conexao();
        Connection conexao = conec.abrirConexao();
        JDBCAuthenticationDAO jdbcAuthentication = new JDBCAuthenticationDAO(conexao);

        Gson gson = new Gson();
        User user = gson.fromJson(usuarioParam, User.class);

        jdbcAuthentication.searchUser(user);
        conec.fecharConexao();

        return this.buildResponse("OK");

    }catch(Exception e){
        e.printStackTrace();
        return this.buildErrorResponse("Falha");
    }
}

}

function foundUser(){

   $.ajax({
    type: "POST",
    url: "rest/authenticationRest/searchUser",
    data: $("#authentication").serialize(),
    contentType: "application/json",
    success:function(date){

    },error(err){
        console.log(err);
        alert("Erro ao processar a requisição " + err.responseText);
    }

   });
}


com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:224)
at com.google.gson.Gson.fromJson(Gson.java:887)
at com.google.gson.Gson.fromJson(Gson.java:852)
at com.google.gson.Gson.fromJson(Gson.java:801)
at com.google.gson.Gson.fromJson(Gson.java:773)
at br.com.festivalRest.rest.authentication.AuthenticationRest.foundUser(AuthenticationRest.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60)
at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205)
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75)
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108)
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147)
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1368)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:385)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:213)
... 47 more

12 Respostas

R

Olá,
printa no console a string que vc ta recebendo antes da conversão, pra ver se é um Json válido. Ai posta aqui.

W

Opa, ele não está me retornando um JSON valido, está me retornando um STRING, assim: login=admin&senha=123, porém não sei mais o que posso fazer para que ele retorne o JSON, ja usei a biblioteca Gson pra converter na resposta e nada .

R

Então o problema está na forma como vc envia isso pro server. Ou vc não deveria estar lendo no server como json e sim como parametros.

W

Fiz testes no POSTMAN, ele está enviando no formato errado, não está no JSON, mas eu não entendo o porque, se ja coloquei json tanto no ajax, como fiz a conversao lado servidor

W

No postman ele me retorna a resposta correta:
Imagem

E

@Wellington_Gallo o método serializa do JQuery serializa pro formato URL Encoded, por isso está chegando dessa forma…

W

Opa @Eldius, tens alguma dica ou alguma forma para que eu possa receber no formato correto?

E

Você poderia colocar um objeto JSON no atributo data

function foundUser(){

   $.ajax({
    type: "POST",
    url: "rest/authenticationRest/searchUser",
    data: {"user": "myUser", "pass": "myPass"},
    contentType: "application/json",
    success:function(date){
    },error(err){
        console.log(err);
        alert("Erro ao processar a requisição " + err.responseText);
    }
   });
}
W

PAssando o id dos campos?

E

Passando um JSON…

W

Sim mas eu digo os dados que eu pego do formulario, eu passo alguma variavel, ou algum campo dentro do json? Os meus dados não podem ser fixos

E

Algo desse tipo:

var dados = {
    "user": $("#inputUser").val()
    , "pass": $("#inputPass").val()
}
Criado 14 de junho de 2017
Ultima resposta 14 de jun. de 2017
Respostas 12
Participantes 3