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文件中只需要加入下面的依赖 其它两个会自动下载


  com.fasterxml.jackson.core
  jackson-databind
  2.12.0

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" %>


商品详情页

${msg}

1.4 Map接收

@RequestMapping(value = "/good/save2",method={RequestMethod.POST})
@ResponseBody
public Map test (@RequestBody  Map map){
    //第一种方式
  /*  Set> set=map.entrySet();;
        Iterator> it=set.iterator();
        while(it.hasNext()){
            Map.Entry entry=it.next();
            System.out.println(entry.getKey()+"=="+entry.getValue());
        }*/
    
        //第二种方式遍历
       /* Set 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;
}

你可能感兴趣的:(springmvc,spring,mvc,json)