为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

胡说叔叔 2021-05-05 18:28:52
我试图创建一个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);}
查看完整描述

2 回答

?
慕容3067478

TA贡献1773条经验 获得超3个赞

@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);

}


查看完整回答
反对 回复 2021-05-19
  • 2 回答
  • 0 关注
  • 374 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信