如何使用ajax和Stringify解码java中的json输入

时间:2016-02-05 08:18:20

标签: javascript java jquery json ajax

这是我的js文件,我使用ajax将json数据发送到singup.java页面。

function signup()
{
    var name = document.getElementById('name').value;
    var mobileNo = document.getElementById('mobileNo').value;
    var emailId = document.getElementById('emailId').value;
    var password = document.getElementById('password').value;
    alert(name);
    alert(mobileNo);
    alert(emailId);
    alert(password);
    var data = {"signUp":[{"name":name,"password":password,"mobileNo":mobileNo,"emailId":emailId}]};
    alert(JSON.stringify(data));
    var sendData = function(data){   
    alert(JSON.stringify(data));
      $.ajax({
     url:'/Signup/signup',
     type: 'POST',
     contentType: 'application/json',
    data: JSON.stringify(data),
    success: function(response)
    {
            alert(response);
    },
});
};
sendData(data);
}

这是我的signup.java页面,我试图获取json值。我不知道语法是否正确。如何在java中进行json解析?

package Json;

    try
    {
            String name =request.getParameter("name");
            String mobileno =request.getParameter("mobileNo");
            String email =request.getParameter("emailId");
            String password =request.getParameter("password");
            Class.forName("com.mysql.jdbc.Driver"); 
            java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo","root","admin"); 
            PreparedStatement ps=con.prepareStatement("insert into comments values(?,?,?,?)");
            ps.setString(1, name);
            ps.setString(2,mobileno);
            ps.setString(3, email);
            ps.setString(4, password);
            ps.executeUpdate();
            out.println("inserted");
    }
    catch(Exception ee)
    {
       out.println("error"+ee.toString());
    }
}

1 个答案:

答案 0 :(得分:1)

request.getParameter用于查询字符串,当您的URI包含部分?name = toto& firstName = titi或来自使用相同格式的表单的POST数据时。

为了阅读json,你要么自己解析它,要么使用解析器。

我建议您使用jackson https://github.com/FasterXML/jackson

导入后,基本要做的是

new ObjectMapper().readerFor(MyClass.class).readValue(request.getInputStream());

为了使这个工作,您的类必须具有:getter / setter,不带参数的公共构造函数 - >不要忘记,如果你用参数声明一个,默认的那个变成私有的,所以你必须声明它。

编辑:我建议你如果你使用杰克逊这样发送它:var data = [{" name":name," password":password,&# 34; mobileNo":mobileNo," EMAILID":EMAILID}];

宣布一个班级" MyClass"使用字段名称,密码,mobileNo,emailId