关于Json对象

第一次接触JSON对象还是在:后端接收前端请求后向前端反应一个集合或者对象,由于前端所接收的类型是JSON,如果我们返回的类型是String,即可以直接返回,如果是自定义类型,就不能直接返回了,要引入jackson依赖,使用其类ObjectMapper中的writeValue或者writeValuesAsString方法将自定义类型转换成JSON对象格式,从而就可以返回给前端了

jackson

1.引入依赖

代码使用(Java对象转Json   Json转Java对象)

后端:

public class draft {
    static class User{
        private String username;
        private String password;

        public String getUsername() {
            return username;
        }

        public void setUsername(String username) {
            this.username = username;
        }

        public String getPassword() {
            return password;
        }

        public void setPassword(String password) {
            this.password = password;
        }
    }
    public void str(HttpServletRequest req,HttpServletResponse resp) throws JsonProcessingException {
        //jackson自带的类---ObjectMapper
        ObjectMapper objectMapper = new ObjectMapper();

        //将自定义类型对象转换为JSON格式对象
        User user = new User();
        user.setPassword("123");
        user.setUsername("zhangsan");
        String strJson = objectMapper.writeValueAsString(user);
        
        //值得注意的是 前端拿到响应对象后解析,是通过User类中的get方法来获取值的(getPassword             getUsername)
        //所以实体类中要重写setter和getter方法,且不能出差错


        //将JSON格式对象转换成Java自定义对象
        User user1 = objectMapper.readValue(req.getInputStream(),User.class);
    }
}

 前端:

<script src="./jquery.min.js"></script>
        <script>
            function getAllInfo() {
                $.ajax({
                    type: 'get',
                    url: '/allinfo',
                    success: function (body) {
                        //得到服务器响应后的Json对象了
                        for (let stu of body) {
                           myfunction(body);
                        }
                    }
                })
            }

            function myfunction(arr){
                let out = "";
                for(let i = 0; i < arr.length; i++){
                    out += "<tr>"
                            + "<td>"+arr[i].name+"</td>"
                            +"<td>"+arr[i].age+"</td>"
                            +"<td>"+arr[i].gender+"</td>"
                            +"<td>"+arr[i].cls+"</td>"
                            +"</tr>";
                }
                document.getElementById("content").innerHTML=out;
            }
            getAllInfo();
        </script>

从上述代码中我们可以得到几个关键点:

1.当后端响应完前端所发送的请求后,返回Json格式数据给前端后,前端会自动将JSON格式对象解析成JS对象,且拿对象里的属性(arr[i].name)是根据类中的get方法获取的,所以当你类中没有写getter和setter方法时,会出问题

2.在JSON对象转Java对象时,我们可以将其细分为以下几步

  • 从回显函数的body参数中得到Json格式的字符串{username:"zhangsan",password:"123"}
  • 根据readValue中的第二个参数类对象来创建一个同类型的Java(User.class)
  • 解析上述Json格式,处理成map键值对形式
  • 遍历所有键值对,看键的名字和实例类中的属性名哪一个是相同的,相同的话就把对于的value设置到该属性中
  • 返回该实体类

3.在spring框架下内置了jackson,所以无须使用ObjectMapper类的方法将其转化成JSON对象,会自动转换

 

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值