小程序:前端同时传递String变量、JSON对象+后台@RequestBody接收

纯粹记录试错过程。

起因是想前端同时传递String变量、JSON对象,但是之前都是单纯传递参数或者对象。

1 前端request请求

wx.request({
          url: "http://127.0.0.1:8080/superadmin/judgecheckresult?scanCode=" + that.data.scanCode,  // 在 url 中传递 String 
          data: JSON.stringify(formData),  // 将 formData 转化成JSON对象
          method: 'POST',
          header: {'Content-Type': 'application/json'},  // http 请求是 JSON 数据格式
          success: function (res) {
            console.log("res")
            console.log(res)
          }
        })

HTTP Content-type 对照表 - 在线工具 - 开源中国社区

2 后台接收数据

@RequestMapping(value = "/judgecheckresult", method = RequestMethod.POST)
    private Map<String, Object> judgeCheckResult(String scanCode, @RequestBody StuCheck stuCheck) {  // @RequestBody 序列化前端的 JSON 对象
    ...
}

这里再说一下,后台处理数据也可以用@RequestParam String来接收数据,但是此时String不能为空,于是就用@RequestBody了。

  • 4
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
如果前端传递的参数是一个 JSON 字符串,你可以使用 @RequestBody 注解将其绑定为一个 Java 对象。但是,如果你仍然无法将 JSON 字符串转换为 Java 对象,可以按照以下步骤操作: 1. 确保你的实体类具有与 JSON 字符串相同的属性和数据类型。 2. 在你的控制器方法中,使用 @RequestBody 注解将 JSON 字符串绑定到一个 String 变量中。 3. 使用一个 JSON 解析器库(如 Jackson)将 JSON 字符串转换为 Java 对象。 例如,假设你的前端传递了以下 JSON 字符串: ``` { "name": "张三", "age": 20 } ``` 你可以按照以下方式将其转换为一个 Person 对象: 1. 确保你的 Person 类具有相应的属性和数据类型: ``` public class Person { private String name; private int age; // getters and setters } ``` 2. 在你的控制器方法中,使用 @RequestBody 注解将 JSON 字符串绑定到一个 String 变量中: ``` @PostMapping("/person") public void addPerson(@RequestBody String personJson) { // 这里的 personJson前端传递JSON 字符串 } ``` 3. 使用 Jackson 解析器将 JSON 字符串转换为 Person 对象: ``` @PostMapping("/person") public void addPerson(@RequestBody String personJson) throws JsonProcessingException { ObjectMapper objectMapper = new ObjectMapper(); Person person = objectMapper.readValue(personJson, Person.class); } ``` 注意:这里使用了 ObjectMapper 类将 JSON 字符串转换为 Person 对象。如果你使用了其他 JSON 解析器库,需要根据相应的文档进行配置。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值