JSON数据处理

1.添加json依赖

springmvc 默认使用jackson作为json类库,不需要修改applicationContext-servlet.xml任何配置,只需引入以下类库springmvc就可以处理json数据:

XML 复制代码
<!--spring-json依赖-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>

2.注解

  • @RequestBody:作用是接收前端ajax传递给后端的json字符串,并将json格式的数据转为java对象

  • @ResponseBody:作用是将java对象转为json格式的数据传递给前台ajax

3.JSON、集合、对象三种数据处理

3.1.JSON数据处理

1)pojo

java 复制代码
package com.by.pojo;



import java.io.Serializable;
import java.util.Date;

public class Account implements Serializable {
    private Integer id;
    private String name;
    private Float money;
    private Address address;
    private Date date;


    @Override
    public String toString() {
        return "Account{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", money=" + money +
                ", address=" + address +
                ", date=" + date +
                '}';
    }

    public Date getDate() {
        return date;
    }

    public void setDate(Date date) {
        this.date = date;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

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

    public Float getMoney() {
        return money;
    }

    public void setMoney(Float money) {
        this.money = money;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }
}
java 复制代码
package com.by.pojo;

import java.io.Serializable;

public class Address implements Serializable {
    private String provinceName;
    private String cityName;
    


    @Override
    public String toString() {
        return "Address{" +
                "provinceName='" + provinceName + '\'' +
                ", cityName='" + cityName + '\'' +
                '}';
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }

    public String getCityName() {
        return cityName;
    }

    public void setCityName(String cityName) {
        this.cityName = cityName;
    }
}

2)编写controller层

java 复制代码
@Controller
@RequestMapping("/Account")
public class AccountController {
@RequestMapping("/controller16")
    @ResponseBody //pojo---》转JSON
    public Account controller16(@RequestBody Account account){//@RequestBody json--》转pojo
        System.out.println(account);
        return account;
    }
}

3)在index.jsp里面定义ajax请求

添加按钮

html 复制代码
 <input type="button" value="测试ajax请求json和响应json" id="testJson"/>

引入js库文件

html 复制代码
<script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script>

编写ajax代码

html 复制代码
  <script type="text/javascript">
    $(function(){
      $("#testJson").click(function(){
        $.ajax({
          type:"post",
          url:"/Account/controller16",
          contentType:"application/json;charset=UTF-8",
          data:'{"id":1,"name":"张二狗","money":999.0}',
          success:function(data) {
                     }
        })
      });
    })
  </script>

结果:

3.2集合数据处理

1)编写controller层

java 复制代码
@RequestMapping("/controller17")
    @ResponseBody
    public Map controller17(@RequestBody Account account){
       Map<String, Object> map = new HashMap<>();
        try {
            //int a=6/0;
            map.put("status",200);
            map.put("msg",account);
        } catch (Exception e) {
            e.printStackTrace();
            map.put("status",500);
            map.put("msg","未知异常!!!!");
        }
        return map;
    }

2)编写ajax代码

html 复制代码
<script type="text/javascript">
    $(function(){
      $("#testJson").click(function(){
        $.ajax({
          type:"post",
          url:"/Account/controller17",
          contentType:"application/json;charset=UTF-8",
          data:'{"id":1,"name":"张二狗","money":999.0}',
          success:function(data) {
            if (data.status == 200) {
              alert(data.msg.name);
              alert(data.msg.money);
            }else {
              alert(data.msg);
            }
          }
        })
      });
    })
  </script>

测试:

3.3对象数据处理

1)pojo

java 复制代码
package com.by.pojo;

public class Result {
    private Integer status;
    private Object msg;

    @Override
    public String toString() {
        return "Result{" +
                "status=" + status +
                ", msg=" + msg +
                '}';
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Object getMsg() {
        return msg;
    }

    public void setMsg(Object msg) {
        this.msg = msg;
    }
}

2)编写controller层

java 复制代码
 @RequestMapping("/controller18")
    @ResponseBody
    public Result controller18(@RequestBody Account account){
        Result result = new Result();
        try {
            //int a=6/0;
            result.setStatus(200);
            result.setMsg(account);
        } catch (Exception e) {
            e.printStackTrace();
            result.setStatus(500);
            result.setMsg("未知异常!!!!!");
        }
        return result;
    }

3)编写ajax代码

html 复制代码
 <script type="text/javascript">
    $(function(){
      $("#testJson").click(function(){
        $.ajax({
          type:"post",
          url:"/Account/controller18",
          contentType:"application/json;charset=UTF-8",
          data:'{"id":1,"name":"张二狗","money":999.0}',
          success:function(data) {
            if (data.status == 200) {
              alert(data.msg.name);
              alert(data.msg.money);
            }else {
              alert(data.msg);
            }
          }
        })
      });
    })
  </script>

结果:

相关推荐
电商API&Tina3 小时前
唯品会数据采集API接口||电商API数据采集
java·javascript·数据库·python·sql·json
李子焱3 小时前
第四节:理解 JSON 结构与 Item 概念
json·js·工作流
张涛酱1074566 小时前
降低 LLM Token 成本 40-50%:TOON 格式实战
json·ai编程
wefly20178 小时前
jsontop.cn使用全攻略:免费无广告的在线工具站,电脑手机通用
开发语言·安全·json·ecmascript·json在线转换
菜鸟程序员专写BUG1 天前
SpringBoot 接口返回异常全集|JSON解析失败/响应乱码/状态码错误完美解决
spring boot·后端·json
张涛酱1074561 天前
Jackson 严格解析:拒绝"温柔"的 JSON
spring boot·json
nilm611 天前
作为前端请使用vue2,elementUI框架 根据后端返回的json 生成表格.
前端·elementui·json
wefly20172 天前
免安装!m3u8live.cn在线 M3U8 播放器,小白也能快速上手
java·开发语言·python·json·php·m3u8·m3u8在线转换
-许平安-2 天前
MCP项目笔记七(插件 calculator)
c++·笔记·json·plugin·mcp
ID_180079054732 天前
淘宝商品详情API的调用频率限制是多少?
大数据·数据库·json