controller发送请求接收返回json

简介: controller发送请求接收返回json

controller发送请求接收返回json

现在两大转换json第三方工具主流就是jacksonfastjson(阿里巴巴)

1 引入jackson依赖(jar包)

<!--jackson依赖 用来转化json-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>2.3.0.RELEASE</version>
</dependency>


2 创建实体和controller

实体代码如下 toString 无参无参构造 getset


package com.wyh.entity;
/**
 * @program: SpringBoot-Ajax-JSON
 * @description: User实体类
 * @author: 魏一鹤
 * @createDate: 2022-02-07 21:45
 **/
public class User {
private String name;
private int age;
public User() {
    }
    @Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", sex='" + sex + '\'' +
'}';
    }
public User(String name, int age, String sex) {
this.name = name;
this.age = age;
this.sex = sex;
    }
public String getName() {
return name;
    }
public void setName(String name) {
this.name = name;
    }
public int getAge() {
return age;
    }
public void setAge(int age) {
this.age = age;
    }
public String getSex() {
return sex;
    }
public void setSex(String sex) {
this.sex = sex;
    }
private String sex;
}

3  创建controller并且写方法请求并使用jackson进行json格式转化

@ResponseBody注解是spring提供的,直接处理返回JSON字符串就行

jackson主要处理对象的JSON数据格式

JSON对象数据格式,以"[]"进行包裹,每个对象用","进行分隔并且用"{}"括起来,最后一个数据没有","分隔


[{"name":"魏一鹤","age":1,"sex":"男"},{"name":"杨玉婷","age":2,"sex":"女"}]


package com.wyh.controller;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.wyh.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
 * @program: SpringBoot-Ajax-JSON
 * @description: 用户中心控制器 返回接收JSON格式的数据
 * @author: 魏一鹤
 * @createDate: 2022-02-07 21:44
 **/
@Controller
public class UserController {
//现在两大转换json第三方工具主流就是jackson和fastjson(阿里巴巴)
    //如果出现乱码,我们需要设置他的编码格式为utf-8,以及它返回的类型,通过@RequesMapping的produces属性来实现
    //produces:指定响应体返回类型和编码
    @RequestMapping(value = "/json1",produces ="application/json;charset=utf-8")
//正常返回的话会走视图解析器,但是json需要返回的是字符串,使用@ResponseBody就能完美解决
    @ResponseBody //响应 返回json格式的数据 将服务器端返回的对象转换为json对象响应回去
    //@RequestBody //接收 接收json格式的数据 将客户端返回的对象转换为json进行接收
    public String  json1() throws JsonProcessingException {
//需要一个jackson的对象映射器 其实就是一个类 ObjectMapper 使用它可以直接将对象转换为json字符串
        ObjectMapper objectMapper = new ObjectMapper();
//创建一个对象
        User user=new User("魏一鹤",1,"男");
//输出Java对象
        System.out.println("Java对象"+user);
//将Java对象转换为JSON字符串 使用writeValueAsString方法把实体放进去即可转化json字符串 需要抛出异常
        String JSONUser = objectMapper.writeValueAsString(user);
//输出JSON字符串
        System.out.println("JSON字符串"+JSONUser);
//由于使用了@ResponseBody注解 这里会将JSONUser以JSON字符串的格式直接返回 十分方便
        return JSONUser;
    }
}
@RequestMapping(value = "/json2")
@ResponseBody
public String json2() throws JsonProcessingException {
    List<User> list=new ArrayList<>();
    User user1=new User("魏一鹤",1,"男");
    User user2=new User("杨玉婷",2,"女");
    list.add(user1);
    list.add(user2);
    ObjectMapper objectMapper = new ObjectMapper();
    String strJSON = objectMapper.writeValueAsString(list);
return  strJSON;
}


测试发现正常返回json字符串


image.png输出如下


Java对象User{name='魏一鹤', age=1, sex='男'}

JSON字符串{"name":"魏一鹤","age":1,"sex":"男"}



目录
相关文章
|
25天前
|
XML JSON 安全
SSM:请求参数与回显&json
本文介绍了请求参数处理、过滤器和拦截器的使用方法。包括如何通过 `@RequestParam` 和 `@ModelAttribute` 绑定请求参数,使用 Lombok 简化实体类开发,实现过滤器处理字符编码,以及配置拦截器进行请求前后的处理。同时,还展示了如何使用 `@ResponseBody` 返回 JSON 数据,并解决了 JSON 编码问题。
|
27天前
|
JSON API 数据格式
postman如何发送json请求其中file字段是一个图片
postman如何发送json请求其中file字段是一个图片
91 4
|
1月前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
83 2
|
2月前
|
JSON API 数据格式
使用Python发送包含复杂JSON结构的POST请求
使用Python发送包含复杂JSON结构的POST请求
|
1月前
|
JSON Java 数据格式
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
java操作http请求针对不同提交方式(application/json和application/x-www-form-urlencoded)
51 1
|
2月前
|
JSON 前端开发 JavaScript
java中post请求调用下载文件接口浏览器未弹窗而是返回一堆json,为啥
客户端调接口需要返回另存为弹窗,下载文件,但是遇到的问题是接口调用成功且不报错,浏览器F12查看居然返回一堆json,而没有另存为弹窗; > 正确的效果应该是:接口调用成功且浏览器F12不返回任何json,而是弹窗另存为窗口,直接保存文件即可。
124 2
|
1月前
|
XML JSON 前端开发
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
C#使用HttpClient四种请求数据格式:json、表单数据、文件上传、xml格式
316 0
|
2月前
|
JSON JavaScript 前端开发
Haskell中的数据交换:通过http-conduit发送JSON请求
Haskell中的数据交换:通过http-conduit发送JSON请求
|
3月前
|
存储 JSON 前端开发
jQuery Get 请求参数转换为 JSON
【8月更文挑战第22天】
|
2月前
|
存储 JSON API
Python编程:解析HTTP请求返回的JSON数据
使用Python处理HTTP请求和解析JSON数据既直接又高效。`requests`库的简洁性和强大功能使得发送请求、接收和解析响应变得异常简单。以上步骤和示例提供了一个基础的框架,可以根据你的具体需求进行调整和扩展。通过合适的异常处理,你的代码将更加健壮和可靠,为用户提供更加流畅的体验。
150 0