Controller如何处理json数据

1.使用RequestBody接收json数据,并转换为对象

封装的Permission对象,用于接收json数据。
@Data

@Data
public class Permission {
    private Long id;
    private Long roleId;
    private String path;
    private List<User> users=new ArrayList<User>();
    private String description;

Controller测试代码如下:

@GetMapping(value ="/json,produces = "application/json;charset=UTF-8")
    public Permission getPermission(@RequestBody Permission permission){
        System.out.println(permission);
        return permission;
    }

启动项目,在postman中测试,需要在headers中填写Content-Type为application/json
在这里插入图片描述
然后再body中选用raw格式,然后右边选择具体的JSON格式,在下方填入传入的JSON。
在这里插入图片描述
Controller得到的对象为:

Permission(id=1, roleId=2, path=/dectory/, users=[User(age=16, name=张三)], description=权限)

2.以Json对象的形式接收,再使用json工具解析

开源的json处理工具有很多,如fastjson、Jackson、gson,此例中我们选用fastjson。
引入fastjson的工具包依赖:

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

postman的请求参数不变,
使用JSON对象接收数据的controller测试代码:

@GetMapping(value ="/string",produces = "application/json;charset=UTF-8")
    public Permission getPermission(@RequestBody JSONObject jsonParam){
        System.out.println(jsonParam);
        Permission permission1 = jsonParam.toJavaObject(Permission.class);
        System.out.println(permission1);
        return permission1;
    }

此时Controller接收到的JSON对象为:

{"path":"/dectory/","roleId":2,"description":"权限","id":1,"users":[{"age":16,"name":"张三"}]}

使用String字符串接收数据的controller测试代码:

@GetMapping(value ="/string1",produces = "application/json;charset=UTF-8")
    public Permission getPermission(@RequestBody String jsonParam){
        System.out.println(jsonParam);
        Permission permission = JSON.parseObject(jsonParam, Permission.class);

        System.out.println(permission);
        return permission;
    }

此时Controller接收到的JSON对象为:

{ "id": 1, "roleId":2, "path":"/dectory/", "users":[{"age":16,"name":"张三" }], "description":"权限"}
GitHub 加速计划 / js / json
41.72 K
6.61 K
下载
适用于现代 C++ 的 JSON。
最近提交(Master分支:1 个月前 )
960b763e 4 个月前
8c391e04 6 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐