SpringMVC的JSON(Jackson和fastjson)

前后端分离时代:

后端后端部署后端,提供接口(就是@RequestMapping("/xx/xx")里面的供前端访问后端数据的地址),提供数据

上下两者之间约定数据的传输格式:json  (大多数情况下用json,也可以用对象等等)

前端:前端独立部署,负责渲染后端返回的数据

 

什么是JSON?

  • JSON(JavaScript Object Notation JS对象标记)是一种轻量级的数据交换格式,目前使用特别广泛
  • 采用完全独立于编程语言的文本格式来存储和表示数据
  • 简洁和清晰的层次结构使得JSON成为理想的数据交换语言
  • 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率

在JavaScript语言中,一切都是对象。因此,任何JavaScript支持的类型都可以通过JSON来表示,例如字符串、数字、对象、数组等。

语法格式:

  • 对象表示键值对,数据由逗号隔开
  • 花括号保存对象
  • 方括号保存数组

前端JavaScript中JSON和JavaScript对象的互相转换

  • 要实现从JSON字符串转换为JavaScript对象,使用JSON.parse()方法
var obj = JSON.parse('{"a":"Hello","b":"world"}');
//结果是{a:'Hello',b:'World'}
  • 要实现JavaScript对象转换为JSON字符串,使用JSON.stringify()方法
var json = JSON.stringify({a:'Hello',b:'World'});
//结果是'{"a":"Hello","b":"World"}'

后端可以用Jackson和Fastjson对数据进行格式转换

1.Jackson的使用

项目中引入maven依赖jar包

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

例1:

@Controller
public class UserController {
    @RequestMapping(value = "/json1",produces = "application/json;charset=utf-8")
    @ResponseBody//不会走视图解析器,会直接返回一个字符串
    public String json1() throws JsonProcessingException {
        //jackson ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //创建一个对象
        User user = new User(22,"土拨鼠",23);
        System.out.println(user);
        String str = mapper.writeValueAsString(user);
        return str;
    }
}

结果:

User(id=22, name=土拨鼠, age=23)===转换===》{"id":22,"name":"土拨鼠","age":23}

例2:

@Controller
public class UserController {
    @RequestMapping(value = "/json2",produces = "application/json;charset=utf-8")
    @ResponseBody//不会走视图解析器,会直接返回一个字符串
    public String json1() throws JsonProcessingException {
        //jackson ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //创建一个对象
        User user1 = new User(22,"土拨鼠1",23);
        User user2 = new User(22,"土拨鼠2",23);
        User user3 = new User(22,"土拨鼠3",23);
        User user4 = new User(22,"土拨鼠4",23);
        List<User> list = new ArrayList<User>();
        list.add(user1);
        list.add(user2);
        list.add(user3);
        list.add(user4);
        System.out.println(list);
        String str = mapper.writeValueAsString(list);
        return str;
    }
}

结果:

[User(id=22, name=土拨鼠1, age=23), User(id=22, name=土拨鼠2, age=23), User(id=22, name=土拨鼠3, age=23), User(id=22, name=土拨鼠4, age=23)]=======》[{"id":22,"name":"土拨鼠1","age":23},{"id":22,"name":"土拨鼠2","age":23},{"id":22,"name":"土拨鼠3","age":23},{"id":22,"name":"土拨鼠4","age":23}]

例3:

@Controller
public class UserController {
    @RequestMapping(value = "/json2",produces = "application/json;charset=utf-8")
    @ResponseBody//不会走视图解析器,会直接返回一个字符串
    public String json1() throws JsonProcessingException {
        //jackson ObjectMapper
        ObjectMapper mapper = new ObjectMapper();
        //使用ObjectMapper来格式化
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return mapper.writeValueAsString(sdf.format(date));
    }
}

结果:

"2020-11-16 00:42:43"

2.FastJson的使用

fastjson.jar是阿里开发的一款专门用于Java开发的包,可以方便的实现json对象与JavaBean对象的转换,实现JavaBean与json字符串的转换,实现json对象与json字符串的转换。

fastjson的pom依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.60</version>
</dependency>

fastjson的三个主要的类:

【JSONObject代表json对象】

  • JSONObject实现了Map接口,猜想JSONObject底层操作是由Map实现的
  • JSONObject对应json对象,通过各种形式的get()方法可以获取json对象中的数据,也可以利用诸如size(),isEmpty()等方法获取“键:值”对的个数和判断是否为空。其本质是通过实现Map接口并调用接口中的方法完成的

【JSONArray代表json对象数组】

  • 内部是由List接口中的方法来完成操作的

【JSON代表JSONObject和JSONArray的转化】

  • 主要是实现json对象,json对象数组,javabean对象,json字符串之间的相互转化

使用:

@Controller
public class UserController {
    @RequestMapping(value = "/json2",produces = "application/json;charset=utf-8")
    @ResponseBody//不会走视图解析器,会直接返回一个字符串
    public String json1() throws JsonProcessingException {
        //创建一个对象
        User user1 = new User(22,"土拨鼠1",23);
        User user2 = new User(22,"土拨鼠2",23);
        User user3 = new User(22,"土拨鼠3",23);
        User user4 = new User(22,"土拨鼠4",23);
        List<User> list = new ArrayList<User>();
        list.add(user1);
        list.add(user2);
        list.add(user3);
        list.add(user4);
        String str = JSON.toJSONString(list);
        return str;
    }
}

 常用的也就下面几个用法:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值