JavaWeb基础04

1.JQuery进阶

1. 动画

默认显示和隐藏方式
1. show([speed,[easing],[fn]]) 显示元素
2. hide([speed,[easing],[fn]]) 隐藏元素
3. toggle([speed],[easing],[fn]) 显示与隐藏元素反复切换

三个参数:
1. speed:动画的速度。三个预定义的值("slow","normal", "fast")或表示动画时长的毫秒数值(如:1000)

2. easing:用来指定切换效果,默认是"swing",可用参数"linear"
  * swing:动画执行时效果是 先慢,中间快,最后又慢
  * linear:动画执行时速度是匀速的

3. fn:在动画完成时执行的函数方法,每个元素执行一次。传递的是一个方法对象

代码示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#hide").click(function(){
                $("p").hide();
            });
            $("#show").click(function(){
                $("p").show();
            });
            $("#toggle").click(function(){
                $("p").toggle();
            });
        });
    </script>
</head>
<body>
<p id="p1">如果点击“隐藏”按钮,我就会消失。</p>
<button id="hide" type="button">隐藏</button>
<button id="show" type="button">显示</button>
<button id="toggle" type="button">切换</button>
</body>
</html>

显示结果
在这里插入图片描述

滑动显示和隐藏方式
1. slideDown([speed],[easing],[fn]) 滑动显示
2. slideUp([speed,[easing],[fn]]) 滑动隐藏
3. slideToggle([speed],[easing],[fn]) 反复显示或者隐藏

代码示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $(".flip1").click(function(){
                $(".panel").slideDown("slow");
            });
            $(".flip2").click(function(){
                $(".panel").slideUp("slow");
            });
            $(".flip3").click(function(){
                $(".panel").slideToggle("slow");
            });
        });
    </script>

    <style type="text/css">
        div.panel,p.flip
        {
            margin:0px;
            padding:5px;
            text-align:center;
            background:#e5eecc;
            border:solid 1px #c3c3c3;
        }
        div.panel
        {
            height:120px;
            display:none;
        }
    </style>
<body>
<div class="panel">
    <p>W3School - 领先的 Web 技术教程站点</p>
    <p>在 W3School,你可以找到你所需要的所有网站建设教程。</p>
</div>

<div class="flip1" style="border: 2px red solid">请点击这里,显示</div>
<div class="flip2" style="border: 2px red solid">请点击这里,隐藏</div>
<div class="flip3" style="border: 2px red solid">请点击这里,显示或隐藏</div>
</body>
</html>
淡入淡出显示和隐藏方式
1. fadeIn([speed],[easing],[fn]):淡入元素
2. fadeOut([speed],[easing],[fn]):淡出元素
3. fadeToggle([speed,[easing],[fn]]):淡入或者淡出矩形框

代码示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            //淡入矩形框
            $("#fadeIn").click(function(){
                $("#div1").fadeIn();
            });
            //淡出矩形框
            $("#fadeOut").click(function(){
                $("#div1").fadeOut();
            });
            //淡入或者淡出矩形框
            $("#fadeToggle").click(function(){
                $("#div1").fadeToggle();
            });
        });
    </script>
</head>
<body>

<button id="fadeIn">点击这里,淡入矩形框</button>
<button id="fadeOut">点击这里,淡出矩形框</button>
<button id="fadeToggle">点击这里,淡入或者淡出矩形框</button>
<br><br>
<div id="div1" style="width:80px;height:80px;display:none;background-color:red;"></div>
<br>
</body>
</html>
三个参数
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("button").click(function (){
                //先慢,中间快,最后又慢
                $("#div1").fadeIn("swing");
                //动画执行时速度是匀速的
                $("#div2").fadeIn("linear");
                //动画时长的3秒
                $("#div3").fadeIn(3000);
            });
        });
    </script>
</head>

<body>
<p>演示带有不同参数的 fadeIn() 方法。</p>
<button>点击这里,使三个矩形淡入</button>
<br><br>
<div id="div1" style="width:80px;height:80px;display:none;background-color:red;"></div>
<br>
<div id="div2" style="width:80px;height:80px;display:none;background-color:green;"></div>
<br>
<div id="div3" style="width:80px;height:80px;display:none;background-color:blue;"></div>
</body>
</html>

2.遍历

for方式
javascript代码
<script type="text/javascript">
        $(function () {
            //1.获取所有的ul下的li
            var citys = $("#city li");
            //2.遍历li
            for (var i = 0; i < citys.length; i++) {
                 //显示内容
                alert(i+":"+citys[i].innerHTML);
                }
        });
</script>

html代码
<ul id="city">
    <li>北京</li>
    <li>上海</li>
    <li>天津</li>
    <li>重庆</li>
</ul>
each方式一
1. 语法:
jquery对象.each(function(index,element){});
 * index:就是元素在集合中的索引
 * element:就是集合中的每一个元素对象
 * this:集合中的每一个元素对象

javascript代码
    <script type="text/javascript">
        $(function () {
            //1.获取所有的ul下的li
            var citys = $("#city li");
            //2. jq对象.each(callback)
            citys.each(function (index,element) {
                //3.1 获取li对象 第一种方式 this 弹出当前this指向的对象
                alert(this.innerHTML);
                //当然我们可以把js对象转成jq对象后,在获取内容
                alert($(this).html());
            });
        });
    </script>

html代码
<ul id="city">
    <li>北京</li>
    <li>上海</li>
    <li>天津</li>
    <li>重庆</li>
</ul>
each方式二

使用回调函数
回调函数返回值:

  • true:如果当前function返回为false,则结束循环(break)。
  • false:如果当前function返回为true,则结束本次循环,继续下次循环(continue)
javascript代码
    <script type="text/javascript">
        $(function () {
            //1.获取所有的ul下的li
            var citys = $("#city li");
            //2. jq对象.each(callback)
            citys.each(function (index, element) {
                //3.2 获取li对象 第二种方式 在回调函数中定义参数   index(索引) element(元素对象)
                //js
                alert(index + ":" + element.innerHTML);
                //js转jq
                alert(index + ":" + $(element).html());
            });
        });
    </script>

html代码
<ul id="city">
    <li>北京</li>
    <li>上海</li>
    <li>天津</li>
    <li>重庆</li>
</ul>
$.each(被遍历对象, 回调函数)方式
 javascript代码
    <script type="text/javascript">
        $(function () {
            //1.获取所有的ul下的li
            var citys = $("#city li");
            //2. $.each(被遍历对象, [callback])
            $.each(citys,function () {
                alert(this.innerHTML);
            })
        });
    </script>

html代码
<ul id="city">
    <li>北京</li>
    <li>上海</li>
    <li>天津</li>
    <li>重庆</li>
</ul>
for…of方式

for…of: jquery 3.0 版本之后提供的方式
语法:for(元素对象 of 容器对象)

    <script type="text/javascript">
        $(function () {
            //1.获取所有的ul下的li
            var citys = $("#city li");
            //2.遍历
            for(li of citys){
                alert($(li).html());
            }
        });
    </script>

3.事件绑定

方式一
1. jquery标准的绑定方式
* jq对象.事件方法(执行函数);

代码示例
    <script type="text/javascript">
        $(function () {
            //标准绑定事件
         $("#name").click(function (){
             alert("我被点击啦!");
         });
        });
    </script>
</head>

<body>
<input id="name" type="text" value="绑定点击事件">
</body>
方式二
2. on绑定事件/off解除绑定
	* jq对象.on("事件名称",回调函数)
	* jq对象.off("事件名称")

代码示例
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/jquery-3.3.1.min.js"></script>
    <script type="text/javascript">
        $(function () {
            //1.使用on给按钮绑定单击事件  click
            $("#btn").on("click",function () {
                alert("我被点击了。。。")
            }) ;

            //2. 使用off解除btn按钮的单击事件
            $("#btn2").click(function () {
                //解除btn按钮的单击事件
                $("#btn").off("click");
                //将组件上的所有事件全部解绑
                //$("#btn").off();
            });
        });
    </script>
</head>

<body>
<input id="btn" type="button" value="使用on绑定点击事件">
<input id="btn2" type="button" value="使用off解绑点击事件">
</body>

如果off方法不传递任何参数,则将组件上的所有事件全部解绑

事件切换
事件切换:toggle
	* jq对象.toggle(fn1,fn2...)
	* 当单击jq对象对应的组件后,会执行fn1.第二次点击会执行fn2.....

代码示例
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="../js/jquery-3.3.1.min.js" type="text/javascript" charset="utf-8"></script>
    <script src="../js/jquery-migrate-1.0.0.js" type="text/javascript" charset="utf-8"></script>
    <script type="text/javascript">
        $(function () {
            //获取按钮,调用toggle方法
            $("#btn").toggle(function () {
                //改变div背景色backgroundColor 颜色为 green
                $("#myDiv").css("backgroundColor","green");
            },function () {
                //改变div背景色backgroundColor 颜色为 pink
                $("#myDiv").css("backgroundColor","pink");
            });
        });
    </script>
</head>

<body>
<input id="btn" type="button" value="事件切换">
<div id="myDiv" style="width:300px;height:300px;background:pink">
    点击按钮变成绿色,再次点击红色
</div>
</body>
注意:1.9版本 .toggle() 方法删除,jQuery Migrate(迁移)插件可以恢复此功能。
<script src="../js/jquery-migrate-1.0.0.js" type="text/javascript" charset="utf-8"></script>

4.插件

插件:增强JQuery的功能

jq获取对象增强
对jQuery获取的对象,进行方法增强

定义格式:
 $.fn.extend({
      // 方法名称1:方法实现方式1
      方法名称:function (方法参数){
       方法实现方式1
    },
     // 方法名称2:方法实现方式2
      方法名称:function (方法参数){
       方法实现方式2
    }
    ..........................
 });


例如
 $.fn.extend({
       // 方法名称:方法实现方式
       newMethod:function (){
         $("body").html("自定义jq方法");
      }
 });
 

调用该方法
 //2.调用方法
 $("#btn-check").newMethod();

html代码
<body>
<div></div>
<input id="btn-check" type="button" value="页面输出一句话" >
<br/>
</body>
jq本身增强
对jq本身,进行方法增强

定义格式:
$.extend({
     //方法名称1:方法实现方式1
    方法名称:function (参数) {
    方法实现的方式
     },
     //方法名称1:方法实现方式1
    方法名称:function (参数) {
    方法实现的方式
     }
 });

例如
$.extend({
   max:function (a,b) {
   //返回两数中的较大值
    return a >= b ? a:b;
    },
    min:function (a,b) {
    //返回两数中的较小值
    return a <= b ? a:b;
    }
});


调用该方法
//调用全局方法
var max = $.max(4,3);
//alert(max);

var min = $.min(1,2);
alert(min);

对全局方法扩展

2.AJAX

概念: ASynchronous JavaScript And XML 异步的JavaScript 和 XML

异步和同步:客户端和服务器端相互通信的基础上

  • 客户端必须等待服务器端的响应。在等待的期间客户端不能做其他操作。
  • 客户端不需要等待服务器端的响应。在服务器处理请求的过程中,客户端可以进行其他的操作。

同步
在这里插入图片描述
异步
在这里插入图片描述

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。

通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

1.简单实现

原生的JS实现方式(了解)

html页面

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script>
        
        //定义方法
        function  fun() {
            //发送异步请求
            //1.创建核心对象:固定写法
            var xmlhttp;
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
                xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }

            //2. 建立连接
            xmlhttp.open("GET","ajaxServlet?username=tom",true);

            //3.发送请求
            xmlhttp.send();

            //4.接受并处理来自服务器的响应结果:固定写法

            //当xmlhttp对象的就绪状态改变时,触发事件onreadystatechange。
            xmlhttp.onreadystatechange=function()
            {
                //判断readyState就绪状态是否为4,判断status响应状态码是否为200
                if (xmlhttp.readyState==4 && xmlhttp.status==200)
                {
                   //获取服务器的响应结果
                    var responseText = xmlhttp.responseText;
                    //弹出结果
                    alert(responseText);
                }
            }

        }
    </script>
    
    
</head>
<body>

    <input type="button" value="发送异步请求" onclick="fun();">

    <input>
</body>
</html>

xmlhttp.open(“GET”,“ajaxServlet?username=tom”,true);

  1. 请求方式:GET、POST
  • get方式,请求参数在URL后边拼接。send方法为空参
  • post方式,请求参数在send方法中定义
  1. 请求的URL:
  2. 同步或异步请求:true(异步)或 false(同步)

2.servlet代码

@WebServlet("/ajaxServlet")
public class AjaxServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取请求参数
        String username = request.getParameter("username");
        
        //2.打印username
        System.out.println(username);

        //3.响应
        response.getWriter().write("hello : " + username);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }
}

当我们点击发送异步请求时,异步请求的java代码会执行,但是整个页面并不会刷新。

JQeury实现方式

$.ajax()

语法:$.ajax({键值对});

代码示例

    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
        
        //定义方法
        function  fun() {

            //使用$.ajax()发送异步请求
            $.ajax({

                // 请求路径
                url:"ajaxServlet" ,

                //请求方式
                type:"POST" ,

                //请求参数
                data:{"username":"jack","age":23},

                //响应成功后的回调函数
                success:function (data) {
                    //弹出显示结果
                    alert(data);
                },

                //表示如果请求响应出现错误,会执行的回调函数
                error:function () {
                    alert("出错啦...")
                },

                //设置接受到的响应数据的格式
                //dataType:"text"
            });
        }
        
    </script>

html页面
<body>
    <input type="button" value="发送异步请求" onclick="fun();">
    <input>
</body>

$.get()
$.get():发送get请求

  • 语法:$.get(url, [data], [callback], [type])
  • 参数:
  • url:请求路径
  • data:请求参数
  • callback:回调函数
  • type:响应结果的类型

代码示例:

    <script>
        
        //定义方法
        function  fun() {
            //发送get请求
            $.get(
                
                //请求路径
                "ajaxServlet",
                
                //请求参数
                {username:"rose"},
                
                //回调函数(执行函数)
                function (data) {
                alert(data);},
                
                //响应结果的类型
                "text");
        }
    </script>
    
    
</head>
<body>

    <input type="button" value="发送异步请求" onclick="fun();">

    <input>
</body>
</html>

$.post()
$.post():发送post请求

  • 语法:$.post(url, [data], [callback], [type])
  • 参数
  • url:请求路径
  • data:请求参数
  • callback:回调函数
  • type:响应结果的类型

代码示例

<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.min.js"></script>
    <script>
    //定义方法
    function  fun() {
    //发送get请求
    $.post(

    //请求路径
    "ajaxServlet",

    //请求参数
    {username:"rose"},

    //回调函数(执行函数)
    function (data) {
    alert(data);},

    //响应结果的类型
    "text");
    }
    </script>
    
    
</head>
<body>

    <input type="button" value="发送异步请求" onclick="fun();">

    <input>
</body>
</html>

3.JSON

概念: JavaScript Object Notation,类似于java中的一个实体对象

例如

java方式
Person p = new Person();
p.setName("张三");
p.setAge(23);
p.setGender("男");

JSON方式
var p = {"name":"张三","age":23,"gender":"男"};

向上面这种形式

JSON的特点

  • json现在多用于存储和交换文本信息的语法
  • 进行数据的传输
  • JSON 比 XML 更小、更快,更易解析。

1.语法规则

1. 基本规则
	* 数据在名称/值对中:json数据是由键值对构成的
		* 键用引号(单双都行)引起来,也可以不使用引号
		* 值得取值类型:
			1. 数字   例如(整数或浮点数)
			2. 字符串 例如(在双引号中)
			3. 逻辑值 例如(true 或 false)
			4. 数组(在方括号中)例如	{"persons":[{},{}]}
			5. 对象(在花括号中) 例如 {"address":{"province":"陕西"....}}
			6. null
	* 数据由逗号分隔:多个键值对由逗号分隔
	* 花括号保存对象:使用{}定义json 格式
	* 方括号保存数组:[]

代码示例

1.基本格式

    <script>
        //1.定义基本格式(JSON)
        //1.1 "name": "张三" 使用双引号
        //1.2 age: 23 什么都不使用
        //1.3 'gender': true 使用单引号
        var person = {"name": "张三", age: 23, 'gender': true};
        alert(person);
    </script>

2.嵌套格式

    <script>
        // 2.嵌套格式 {}———> []
        var persons = {
            "persons": [
                {"name": "张三", "age": 23, "gender": true},
                {"name": "李四", "age": 24, "gender": true},
                {"name": "王五", "age": 25, "gender": false}
            ]
        };
    </script>

3.嵌套格式

    <script>
        //2.嵌套格式   []———> {}
        var ps = [
            {"name": "张三", "age": 23, "gender": true},
            {"name": "李四", "age": 24, "gender": true},
            {"name": "王五", "age": 25, "gender": false}
            ];
    </script>

2.获取数据

语法

  1. json对象.键名
  2. json对象[“键名”]
  3. 数组对象[索引]
  4. 遍历

代码示例

方式一

    <script>
        //1.定义基本格式
        var person = {"name": "张三", age: 23, 'gender': true};

        //获取name的值
        //方式一
        var age = person.age;
        //方式二
        var name = person["name"];

        alert(name);
        alert(age);
    </script>

方式二

    <script>
        //2.嵌套格式
        var persons = {
            "persons": [
                {"name": "张三", "age": 23, "gender": true},
                {"name": "李四", "age": 24, "gender": true},
                {"name": "王五", "age": 25, "gender": false}
            ]
        };
        //获取王五值
        var name = persons.persons[2].name;

        alert(name);
    </script>

遍历基本格式

    <script>
        
        //1.遍历基本格式
        var person = {"name": "张三", age: 23, 'gender': true};
        
        //获取person对象中所有的键和值
        //获取键 key
        for(var key in person){
            //这样的方式获取不行。因为相当于  person."name"
            //alert(key + ":" + person.key);
            
            alert(key+":"+person[key]);
        }
    </script>

遍历数组格式

    <script>

        //2.遍历数组
        var ps = [
            {"name": "张三", "age": 23, "gender": true},
            {"name": "李四", "age": 24, "gender": true},
            {"name": "王五", "age": 25, "gender": false}
            ];
        //获取ps中的所有值
        for (var i = 0; i < ps.length; i++) {
            var p = ps[i];
            for(var key in p){
                alert(key+":"+p[key]);
            }
        }
    </script>

4.JSON数据和Java对象的相互转换

JSON解析器

  • 常见的解析器:Jsonlib,Gson,fastjson,jackson

1.JSON转为Java对象

1.导入jackson的相关jar包
在这里插入图片描述

2.创建Jackson核心对象 ObjectMapper


 //2.创建Jackson的核心对象  ObjectMapper
ObjectMapper mapper = new ObjectMapper();

3.调用ObjectMapper的相关方法进行转换

//将对象转为json字符串
String json = mapper.writeValueAsString(p);
System.out.println(json); //显示 {"name":"张三","age":23,"gender":"男"}

//将数据写到d://a.txt文件中
 mapper.writeValue(new File("e://a.txt"),p);

4.person实体对象

public class Person {

    private String name;
    private int age;
    private String gender;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", gender='" + gender + '\'' +
                '}';
    }
}

writeValue(参数1,obj):方法

  • 参数1
    File:将obj对象转换为JSON字符串,并保存到指定的文件中
    Writer:将obj对象转换为JSON字符串,并将json数据填充到字符输出流中
    OutputStream:将obj对象转换为JSON字符串,并将json数据填充到字节输出流中

  • obj
    obj表示我们需要转换的对象

writeValueAsString(obj):方法
将对象转为json字符串

2.使用注解实现

@JsonIgnore:排除属性。
@JsonFormat:属性值得格式化

@JsonIgnore

在person实体对象中添加如下属性

    @JsonIgnore //排除属性
    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

执行如下代码

    @Test
    public void test02() throws Exception {
        //1.创建Person对象
        Person p  = new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");
        p.setBirthday(new Date());

        //2.创建Jackson的核心对象  ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        
        //3.转换
        String json = mapper.writeValueAsString(p);
        System.out.println(json);
    }

在这里插入图片描述
可以看到没有显示

@JsonFormat

在person实体对象中添加如下属性

    @JsonFormat(pattern = "yyyy-MM-dd") //标准格式转换
    private Date birthday;

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

执行如下代码

    @Test
    public void test02() throws Exception {
        //1.创建Person对象
        Person p  = new Person();
        p.setName("张三");
        p.setAge(23);
        p.setGender("男");
        p.setBirthday(new Date());

        //2.创建Jackson的核心对象  ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        
        //3.转换
        String json = mapper.writeValueAsString(p);
        System.out.println(json);
    }

执行结果
在这里插入图片描述
我们可以看到有生日的格式显示

如果不添加JsonFormat标准格式转换,那么就只会显示毫秒值

3.复杂java对象转换

List数组
    @Test
    public void test03() throws Exception {
        //1.创建Person对象,并添加到一个集合中去
        Person p1  = new Person();
        p1.setName("张三");
        p1.setAge(23);
        p1.setGender("男");
        p1.setBirthday(new Date());

        Person p2  = new Person();
        p2.setName("张三");
        p2.setAge(23);
        p2.setGender("男");
        p2.setBirthday(new Date());


        Person p3  = new Person();
        p3.setName("张三");
        p3.setAge(23);
        p3.setGender("男");
        p3.setBirthday(new Date());

        //创建List集合
        List<Person> ps = new ArrayList<Person>();
        ps.add(p1);
        ps.add(p2);
        ps.add(p3);

        //2.创建Jackson的核心对象  ObjectMapper
        ObjectMapper mapper = new ObjectMapper();

        //3.转换
        String json = mapper.writeValueAsString(ps);
        System.out.println(json);
    }

显示结果

[
{"name":"张三","age":23,"gender":"男","birthday":"2021-02-15"},
{"name":"张三","age":23,"gender":"男","birthday":"2021-02-15"},
{"name":"张三","age":23,"gender":"男","birthday":"2021-02-15"}
]
Map集合
    @Test
    public void test4() throws Exception {
        //1.创建map对象
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("name","张三");
        map.put("age",23);
        map.put("gender","男");


        //2.转换
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(map);
        System.out.println(json);//{"gender":"男","name":"张三","age":23}
    }

显示结果

{"gender":"男","name":"张三","age":23}

4.JSON字符串转为Java对象

  1. 导入jackson的相关jar包
  2. 创建Jackson核心对象 ObjectMapper
  3. 调用ObjectMapper的相关方法进行转换
    @Test
    public void test5() throws Exception {
        //1.初始化JSON字符串
        String json = "{\"gender\":\"男\",\"name\":\"张三\",\"age\":23}";

        //2.创建ObjectMapper对象
        ObjectMapper mapper = new ObjectMapper();
        //3.转换为Java对象 Person对象
        Person person = mapper.readValue(json, Person.class);

        System.out.println(person);
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值