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


    遇到的问题:
    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));
              }
        })
  • 相关阅读:
    浅析JavaScript正则表达式
    原生js格式化json工具
    你真的会玩SQL吗?无处不在的子查询
    你真的会玩SQL吗?EXISTS和IN之间的区别
    你真的会玩SQL吗?让人晕头转向的三值逻辑
    http://www.cnblogs.com/zhangs1986/p/4914520.html
    你真的会玩SQL吗?查询指定节点及其所有父节点的方法
    上传文件和导出的测试用例设计
    Fiddler抓取HTTPs流量
    Fiddler死活抓不了HTTPS包解决办法
  • 原文地址:https://www.cnblogs.com/cnsec/p/13286682.html
Copyright © 2020-2023  润新知