JSON<----JSON字符串<---Java对象/map

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>&nbsp; 码:<input type="password" name="password"><br>&nbsp; 好:吃饭<input type="checkbox" name="hobby" value="eat" checked/> 睡觉<input type="checkbox" name="hobby" value="sleep"/><br/>&nbsp; 别:男 <input type="radio" value="man" name="sex" checked/><input type="radio" value="woman" name="sex"/><br/>&nbsp; 校: <select name="school">
                    <option value="yangguang">阳光小学</option>
                    <option value="xiwang">希望小学</option>
                    <option value="tiantian">天天小学</option>
                </select>
        <br><br><br>
        <input type="submit" value="提交"/> &nbsp;&nbsp;<input type="reset" value="重置" />
        <br> <br> <br>
        <input type="button" value="点我序列化为url" id="serializeUrl"/>&nbsp;&nbsp;<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参数的形式,第一个参数前面没有&符号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值