JavaScript对象表示法
//Java对象
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
//JavaScript对象表示法--------Json----将数据进行封装
var p={"name":"张三","age":23;"gender":"男"};
存储和交换文本信息,传输数据
语法:
1.基本规则:
json数据由键(双引号)值(双引号—除了数字)对构成
var p={"name":"张三","age":23;"gender":"男"};
2.如何获取数据
json对象.键名
p.name---------请求回来的数据(java-->json)
JSON数据和Java对象的相互转换(解析器jackson)
1.JSON转Java对象
2.1Java对象转JSON字符串
a.jackson的jar包
b.
//创建Person兑对象
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
//创建Jackson的核心对象 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//转换
String json=mapper.writeValueAsString(p);
//操作
//{"name":"张三","age":23;"gender":"男"}
system.out.println(json);
2.2JSON字符串转JSON格式
ResultInfo info = new ResultInfo();//因为前端不是jsp,不能直接输出域的消息,只能创建一个实体类,将info对象序列为json,将json数据写回客户端
if(flag){
//ResultInfo//注册失败
info.setFlag(true);
}else{
info.setFlag(false);
info.setErrorMsg("注册失败");
}
ObjectMapper mapper = new ObjectMapper();
String json=mapper.writeValueAsString(info);
//在服务器端设置MIME类型,设置响应的格式为json
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
$(function () {
//当表单提交,调用所有校验方法
$("#registerForm").submit(function () {
//1.发送数据到服务器
if(checkUsername()&&checkPassword()&&checkEmail()){
//校验通过,发送ajax请求,提交表单的数据
//$(selector).serialize():serialize() 方法通过序列化表单值
//a=1&b=2&c=3&d=4&e=5
/*js--->jquery
* 3.两者相互转换:
* js-->jq $(js)
*/
$.post("registerUserServlet",$(this).serialize(),function (data) {
//处理服务器响应的数据,data{flag:true,erroMsg:"注册失败"}
if(data.flag){
//注册成功,跳转到成功页面
location.href="register_ok.html"
}else{
//注册失败.给erroMsg添加提示信息
$("#erro_msg").html(data.errorMsg)
}
})
}
List/map
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");
Person p1 = new Person();
p1.setName("张三");
p1.setAge(23);
p1.setGender("男");
Person p2 = new Person();
p2.setName("张三");
p2.setAge(23);
p2.setGender("男");
List<Person> ps = new ArrayList<Person>();
ps.add(p);
ps.add(p1);
ps.add(p2);
//创建Jackson的核心对象 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//转换
String json=mapper.writeValueAsString(ps);
//操作
/*[
{"name":"张三","age":23;"gender":"男"},
{"name":"张三","age":23;"gender":"男"},
{"name":"张三","age":23;"gender":"男"}
*/]
system.out.println(json);
Map<String,Object> mp = new HashMap<String,Object>();
mp.put("name","张三");
mp.put("age",23);
mp.put("gender","男");
//创建Jackson的核心对象 ObjectMapper
ObjectMapper mapper = new ObjectMapper();
//转换
String json=mapper.writeValueAsString(mp);
//操作
/*
{"name":"张三","age":23;"gender":"男"},---与对象格式一致
*/
system.out.println(json);
jQuery ajax - serialize() 方法
<form>
<div><input type="text" name="a" value="1" id="a" /></div>
<div><input type="text" name="b" value="2" id="b" /></div>
<div><input type="hidden" name="c" value="3" id="c" /></div>
<div>
<textarea name="d" rows="8" cols="40">4</textarea>
</div>
<div><select name="e">
<option value="5" selected="selected">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select></div>
<div>
<input type="checkbox" name="f" value="8" id="f" />
</div>
<div>
<input type="submit" name="g" value="Submit" id="g" />
</div>
</form>
//.serialize() 方法可以操作已选取个别表单元素的 jQuery 对象,
//比如 <input>, <textarea> 以及 <select>。
//不过,选择 <form> 标签本身进行序列化一般更容易些:
$('form').submit(function() {
alert($(this).serialize());
return false;
});
//a=1&b=2&c=3&d=4&e=5
//只会将”成功的控件“序列化为字符串。如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用 name 属性。
https://blog.csdn.net/xinghuo0007/article/details/72654817
<!DOCTYPE html>
<html lang="zh">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../js/jquery-3.2.1.js"></script>
</head>
<body>
<form method="post" action="#" id="test_form">
用户名:<input type="text" name="username"/><br>
密 码:<input type="password" name="password"><br>
爱 好:吃饭<input type="checkbox" name="hobby" value="eat" checked/> 睡觉<input type="checkbox" name="hobby" value="sleep"/><br/>
性 别:男 <input type="radio" value="man" name="sex" checked/> 女 <input type="radio" value="woman" name="sex"/><br/>
学 校: <select name="school">
<option value="yangguang">阳光小学</option>
<option value="xiwang">希望小学</option>
<option value="tiantian">天天小学</option>
</select>
<br><br><br>
<input type="submit" value="提交"/> <input type="reset" value="重置" />
<br> <br> <br>
<input type="button" value="点我序列化为url" id="serializeUrl"/> <input type="button" value="点我序列化为json" id="serializeJson"/>
</form>
</body>
</html>
###知识点一:serialize()
方法介绍:
作用:序列表单内容为字符串。
参数: 无
返回值:表单内容的字符串格式
案例代码:
<script>
$(function () {
$("#serializeUrl").click(function () {
testJquerySerializeUrl();
});
});
function testJquerySerializeUrl() {
var serializeUrl = $("#test_form").serialize();
alert("序列化为url格式为:"+serializeUrl);
}
</script>
总结:
1.我们看到输出的结果为表单项中的各表单元素的name和value值
2.格式是以url参数的形式,第一个参数前面没有&符号