Json


阳光少年     2020-09-26     930

Json

目录

Json


解释: JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。

json的转换

  • json对象转换为字符串: JSON.stringify(obj);

  • 字符串转换为json对象: JSON.parse(value);


<script type="text/javascript">

    //定义一个user对象
    var user = {

        name : "张三",
        age : 18,
        sex : "男"
    };

    //输出user对象
    console.log(user);

    //将user对象转换为字符串
    var userValue = JSON.stringify(user);
    console.log(userValue);

    //将json字符串转换为user对象
    var user1 = JSON.parse(userValue);
    console.log(user1);

</script>

@ResponseBody注解

  • 1、概念

    • 注解 @ResponseBody,使用在控制层(controller)的方法上。
  • 2、作用

    • 作用:将方法的返回值,以特定的格式写入到response的body区域,进而将数据返回给客户端。
    • 当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
    • 如果返回值是字符串,那么直接将字符串写到客户端;如果是一个对象,会将对象转化为json串,然后写到客户端。
  • 3、注意编码

    • 如果返回对象,按utf-8编码。如果返回String,默认按iso8859-1编码,页面可能出现乱码。因此在注解中我们可以手动修改编码格式,例如@RequestMapping(value="/cat/query",produces="text/html;charset=utf-8"),前面是请求的路径,后面是编码格式。
  • 4、原理

    • 控制层方法的返回值是如何转化为json格式的字符串的?其实是通过HttpMessageConverter中的方法实现的,它本是一个接口,在其实现类完成转换。如果是bean对象,会调用对象的getXXX()方法获取属性值并且以键值对的形式进行封装,进而转化为json串。如果是map集合,采用get(key)方式获取value值,然后进行封装。

使用jackjson将对象转换为json格式的字符串


//如果出现乱码问题,需要指定他的编码格式为utf8,以及返回格式
    @RequestMapping(value = "/json1.do",produces = "application/json;charset=utf-8")
    @ResponseBody   //以json格式返回字符串,不走视图解析器
    public String json1() throws JsonProcessingException {

        //创建user对象
        User user = new User("李四",18,"男");

        //创建jackjson的对象映射器
        ObjectMapper om = new ObjectMapper();

        //将user对象转换为字符串
        String userValue = om.writeValueAsString(user);

        return userValue;
    }
    //如果出现乱码问题,需要指定他的编码格式为utf8,以及返回格式
    @RequestMapping(value = "/json2.do")
    @ResponseBody   //以json格式返回字符串,不走视图解析器
    public String json2() throws JsonProcessingException {

        //创建list集合
        List<User> users = new ArrayList<>(5);

        users.add(new User("李四",18,"男"));
        users.add(new User("李四",18,"男"));
        users.add(new User("李四",18,"男"));
        users.add(new User("李四",18,"男"));


        //创建jackjson的对象映射器
        ObjectMapper om = new ObjectMapper();

        //将users对象转换为字符串
        String userValue = om.writeValueAsString(users);

        return userValue;
    }