猿问

尝试使用Gson库将Json解析为Java对象时抛出异常

我试图创建一个Web方法谁会得到一个Json字符串。我需要获取该json字符串并将其解析为java对象。


当我试图做到这一点时,我得到了例外:


javax.servlet.ServletException: com.google.gson.JsonSyntaxException: 

java.io.EOFException: End of input at line 1 column 2

根本原因


com.google.gson.JsonSyntaxException: java.io.EOFException: End of input at 

line 1 column 2

根本原因


 java.io.EOFException: End of input at line 1 column 2

那是我的代码:


@GET

@Produces("application/text")

@Path("checkuser/{user}")

public String checkUser(@PathParam("user") String mu) throws SQLException, ClassNotFoundException {


    gson = new Gson();

    modelUserGet = gson.fromJson(mu, ModelUser.class);


    StringBuilder query = new StringBuilder();


    query.append("SELECT user, password, email,");

    query.append(" telephone, creation_data, last_update_data ");

    query.append("FROM user ");

    query.append("WHERE user ='");

    query.append(modelUserGet.getUser());

    query.append("' ");


    datamysql = new DataMySqlAccess();

    Statement st = datamysql.getConnection().createStatement();

    ResultSet rs = st.executeQuery(query.toString());




    String result = "";


    if(rs.next() == true){


        modelUserSend = new ModelUser(

                rs.getString("user"),

                rs.getString("password"),

                rs.getString("email"),

                rs.getString("telephone"),

                rs.getString("creation_data"),

                rs.getString("last_update_data")

        );


        if(!modelUserSend.getPassword().equals(modelUserGet.getPassword()))

            result = "INVALID_PASSWORD";

        else

            result = "OK";

    } else 

        result = "INVALID_USER";



    modelUserSend.setCheckUserReponse(result);


    return gson.toJson(modelUserSend);

}


胡说叔叔
浏览 375回答 2
2回答

慕容3067478

@PathParam(“ user”)字符串mu这是您要获取的PathParameter,它是一个字符串。这就是例外的原因。它无法转换为模型。在您的情况下,请将其作为单独的路径参数变量并在方法中使用它。编辑1我认为,用户名是您从参数中唯一需要的项目。因此,最好将用户名作为Path参数获取。其他细节,您正在从数据库中获取。@GET@Produces("application/text")@Path("checkuser/{user}")public String checkUser(@PathParam("user") String userName) throws SQLException, ClassNotFoundException {StringBuilder query = new StringBuilder();query.append("SELECT user, password, email,");query.append(" telephone, creation_data, last_update_data ");query.append("FROM user ");query.append("WHERE user ='");query.append(userName);query.append("' ");datamysql = new DataMySqlAccess();Statement st = datamysql.getConnection().createStatement();ResultSet rs = st.executeQuery(query.toString());String result = "";if(rs.next() == true){    modelUserSend = new ModelUser(            rs.getString("user"),            rs.getString("password"),            rs.getString("email"),            rs.getString("telephone"),            rs.getString("creation_data"),            rs.getString("last_update_data")    );    if(!modelUserSend.getPassword().equals(modelUserGet.getPassword()))        result = "INVALID_PASSWORD";    else        result = "OK";} else     result = "INVALID_USER";modelUserSend.setCheckUserReponse(result);return gson.toJson(modelUserSend);}
随时随地看视频慕课网APP

相关分类

Java
我要回答