【other】SpringMVC解析复杂json遇到的问题

本文解决了SpringMvc无法解析前端传来的复杂JSON对象的问题,并详细介绍了如何配置前端和后端来确保正确解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到的问题:
jQuery cookies 无法写入
原因:
直接打开了html文件导致cookie无效,浏览器会忽略无效cookie
解决:
在服务器运行项目,在写入cookie

遇到的问题:
SpringMvc无法解析前端传来的Json对象
原因:
SpringMvc无法解析复杂Json对象
解决:
在RequestMapping的发方法参数前加上@RequestBody
出现的新问题:
HttpMediaTypeNotSupportedException: Content type ‘application/x-www-form-url’
原因:
@ReauestBody需要’application/json’
解决:
前端改为$.ajax({}),设置contentType:’application/json’
或者在@RequestMapping中添加consmues=’application/json’(不过似乎无效)
出现的新问题:
Unrecognized token ‘userClientInfo’: was expecting (‘true’, ‘false’ or ‘null’)
原因:
json格式有误
解决:
使用JSON.stringify()进行转化

总结:
SpringMvc解析前端传来的复杂Json数据.

例如:
需要被转换的类:

    public class RequestData<T> {
        private UserClientInfo userClientInfo;
        private T data;
        //省略get set
    }

RequestMapping方法:

    @RequestMapping(value = "/list")
    @ResponseBody
    public String list(@RequestBody RequestData<Map> requestData){
        System.out.println(JSONObject.fromObject(requestData));
        return "{\"status\":\"ok\"}";
    }

@RequestBody的目的是为了解析Json.
需要在前端ajax中指定contentType=’application/json’

    var reqData = {};
    var usic = common.setUserClientInfoToCookie();
    reqData.userClientInfo = usic;
    reqData.data = {};
    reqData.data.userId = 10000;
    $.ajax({
          url:'xxx',
          type:'post',
          contentType:'application/json',
          dataType:'json',
          data:JSON.stringify(reqData),//注意这里要用JSON.stringify()包一下
          success:function(data) {
             alert(JSON.stringify(data));
          }
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勇敢牛牛_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值