Spring MVC JSON 数据交互

🔔

JSON 语法 | 菜鸟教程

为实现浏览器与控制器类之间的 JSON 数据交互,

Spring MVC 提供了 MappingJackson2HttpMessageConverter 实现类默认处理 JSON 格式请求响应。该实现类利用 Jackson 开源包读写 JSON 数据,将 Java 对象转换为 JSON 对象和 XML 文档,同时也可以将 JSON 对象和 XML 文档转换为 Java 对象。

在使用注解开发时需要用到两个重要的 JSON 格式转换注解,

分别是 @RequestBody @ResponseBody

  • @RequestBody:用于将请求体中的数据绑定到方法的形参中,该注解应用在方法的形参上

  • @ResponseBody:用于直接返回 return 对象,该注解应用在方法上。

1.1 引入jackson

项目依赖于:

jackson-databind-2.12.0.jar jackson-annotations-2.12.0.jar jackson-core-2.12.0.jar

在pom.xml文件中只需要加入下面的依赖 其它两个会自动下载

<dependency>
  <groupId>com.fasterxml.jackson.core</groupId>
  <artifactId>jackson-databind</artifactId>
  <version>2.12.0</version>
</dependency>

1.2 编写POJO

@Data
public class Good {
    String name;
    double price;
    int num;
}

1.3 编写Controller

@Controller
public class GoodController {

   @PostMapping("/goods")
    public ModelAndView test(@RequestBody Good good){
    ModelAndView mv=new ModelAndView();
    mv.addObject("msg",
            "商品名称:"+good.getName()+
                    ",商品价格:"+good.getPrice()+
                    ",商品数量:"+good.getNum());
    mv.setViewName("good");
    return mv;
    } 
    
    //使用idea中 RestfulTool工具插件设置
    //假如写了一个相同的地址会执行哪一个?
    @GetMapping("/goods")
    public Good test2(){
       Good g=new Good();
       g.setName("苹果");
       g.setPrice(89);
       g.setNum(20);
        return g;
    }
    
    @RequestMapping(value = "/good/save",method={RequestMethod.POST})
    @ResponseBody
    public Good save(@RequestBody Good good){
        System.out.println(good.toString());
        return good;
    }
}

good页面:

<%@page pageEncoding="UTF-8" language="java" contentType="text/html;UTF-8" %>
<html>
<body>
<h1>商品详情页</h1>
<p>${msg}</p>
</body>
</html>

1.4 Map接收

@RequestMapping(value = "/good/save2",method={RequestMethod.POST})
@ResponseBody
public Map test (@RequestBody  Map map){
    //第一种方式
  /*  Set<Map.Entry<String, Object>> set=map.entrySet();;
        Iterator<Map.Entry<String, Object>> it=set.iterator();
        while(it.hasNext()){
            Map.Entry<String, Object> entry=it.next();
            System.out.println(entry.getKey()+"=="+entry.getValue());
        }*/
    
        //第二种方式遍历
       /* Set<String> s1=map.keySet();
        for (String key : s1) {
            Object value = map.get(key);
            System.out.println(key+"==="+value);
        }*/
        // 第三种方式遍历 lamubda表达式
        map.forEach((key,value)->{
            if(key !=null){
                System.out.println(key+"==="+value);
            }
        });
       
    return map;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值