Spring MVCJSON数据交互(Java学习笔记)

JSON是一种轻量级的数据交换格式,与XML类似但更紧凑,常用于前后端数据交互。JSON支持对象和数组两种结构,SpringMVC通过MappingJackson2HttpMessageConverter处理JSON请求和响应。要使用JSON转换,需要引入Jackson的依赖包,并可以使用@RequestBody和@ResponseBody注解进行数据绑定和响应。
摘要由CSDN通过智能技术生成

JSON 是近些年一种比较流行的数据格式,它与 XML 相似,也是用来存储数据的。但相较于 XML,JSON 数据占用的空间更小,解析速度更快。因此,使用 JSON 数据进行前后台的数据交互也是一种十分常见的手段。

JSON概述

JSON(JavaScript Object Notation,JS 对象标记)是一种轻量级的数据交互格式。与 XML 一样,JSON 也是一种基于纯文本的数据格式。通过它,我们不仅能够传递 String、Number、Boolean 等简单类型的数据,还可以传递数组、Object 对象等复杂类型的数据。

JSON 支持 2 种数据结构,它们分别是对象结构和数组结构:

对象结构

JSON 的对象结构以“{”开始,以“}”结束,中间则由 0 个或多个以英文的逗号(即“,”)分隔的 key/value 对构成。

对象结构的语法结构如下。

{
    key1:value1,
    key2:value2,
    ...
}

其中,key 必须为 String 类型,value 可以是 String、Number、Object、Array 等数据类型。
实例:

{
     "pname":"张三",
    "password":"123456",
    "page":40
}

2. 数组结构

JSON 的数组结构以“[”开始、以“]”结束,中间部分由 0 个或多个以英文的逗号(即“,”)分隔的值列表组成。

数组结构的语法结构如下:

{
    value1,
    value2,
    ...
}

例如,一个数组中包含了 String、Number、Boolean、null 多种类型的数据,使用 JSON 的数组结构表示形式如下。

[
    "c语言中文网",
    123456789,
    true,
    null
]

上述两种(对象、数组)数据结构也可以分别组合构成更加复杂的数据结构。

例如:

{
    "sno":"201802228888",
    "sname":"张三",
    "hobby":[
        "篮球",
        "足球"
    ],
    "college":{
        "cname":"清华大学",
        "city":"北京",
        "code":100000
    }
}

JSON 数据转换

为了实现浏览器与控制器类之间的 JSON 数据交互,Spring MVC 提供了一个默认的 MappingJackson2HttpMessageConverter 类,来处理 JSON 格式请求和响应。通过它,我们既可以将 Java 对象转换为 JSON 数据,也可以将 JSON 数据转换为 Java 对象。

引入依赖包

想要使用 MappingJackson2HttpMessageConverter 对 JSON 数据进行转换,第一步就是要将 Jackson 的依赖包引入到 Spring MVC 项目中。
jackson-annotations-x.x.x.jar:JSON 转换的注解包
jackson-core-x.x.x.jar:JSON 转换的核心包
jackson-databind-x.x.x.jar:JSON 转换的数据绑定包

以上这些 Jackson 的开源依赖包都可以通过“https://mvnrepository.com/artifact/com.fasterxml.jackson.core”下载得到。

JSON 转换注解

Spring MVC 为我们提供了两个十分重要的与 JSON 格式转换相关的注解,它们分别是 @RequestBody 和 @ResponseBody。

注解位置说明
@RequestBody方法的形参上该注解用于将请求体中的数据绑定到控制器方法的形参上。
@ResponseBody方法上该注解用于将控制器方法的返回值,直接作为响应报文的响应体响应到浏览器上。
实例:
 @ResponseBody
    @RequestMapping("/getProductList1")
    public List<Product> getProductList1() {
        List productList = productDao.getProductList();
        return productList;
    }

  @ResponseBody
    @RequestMapping(value = "/product", method = RequestMethod.POST)
    public Product addProduct(@RequestBody Product product) {
        productDao.addProduct(product);
        return product;
    }

学习原文

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值