关于Spring MVC返参数报406错误(Spring +Spring MVC+微信小程序(idea))

在做微信小程序开发的时候,当将从数据库内查到的多行数据以JSONObject对象包装成JSON数据返回微信小程序时,在前端接收时出现了406错误。
经查询,406错误是因为前端无法解析后台的数据,我是用JSONObject作为返回类型直接返回前端,所以,就报错了,经过七八个小时的查询,终于明白了一件事,JSONObject类型不是JSON字符串数据,不能够被前端直接解析,JSONObject是一个JSON对象,但前端无法解析JSONObject对象,只能解析JSON字符串
在这里插入图片描述


    @RequestMapping(value = "/FindRoomUsedSeat",produces="text/html;charset=UTF-8")
    @ResponseBody
    public String FindRoomUsedSeat(@RequestBody String seatdata){
        JSONObject jsonGet = JSONObject.fromObject(seatdata);

        String send = "";
        System.out.println(jsonGet+"get");
        String floor = (String)jsonGet.get("floor");
        String room = (String)jsonGet.get("room");
        List<Map<String, Object>> lists = seatService.FindEveryEmptySeatOfFloorAndRoom(floor,room);
        //由于查询出来的数据没有用
        JSONArray jsonSend1 = JSONArray.fromObject(lists);//将List类型转化为JSONArray对象,方便转化为JSON字符进行传送
        send = jsonSend1.toString();//转换为JSON字符串,进行数据传送
        return send;
    }

这个是我写的微信小程序的后台代码,在报406错误的时候是没有进行转化的,直接返回的是JSONObject对象,所以前台一直无法解析数据。
还有,用@ResponseBody进行方法返回值的注解时,用HashMap座位返回值,虽说此注解会将Map数据类型转化为JSON类型,但是前台依旧无法解析,所以,将JSONObject对象转化为String类型会减少很多麻烦,类型转化最好在后台解决,切记不要以对象形式传送数据,否则前后台交互会产生很多问题。前端和后端要使用两种语言或者说是着重不同方面,后端的数据处理能力要更强,很多数类型到前端都会无法解析。

还有一个关于SpringMVC 从数据库查询内容的获取的知识点,也是我以前没太注意的地方,我是用的jdbcTemplate进行数据库的操作,而且以前都是对单条数据进行获取,一般都是返回Map类型,只需要用jdbcTemplate.queryForMap()方法即可,但是多条数据的话就没办法返回了,此时,有两种方法:
其一是直接返回List<Map<String, Object>>类型,将Map直接放到一个List集合中,接收的话可以直接使用一个List<Map<String, Object>>进行接收,

List<Map<String, Object>> list = seatService.FindEveryEmptySeatOfFloorAndRoom(floor,room);//接收数据

若要发往前端,可进行简单处理如下

        JSONArray jsonSend1 = JSONArray.fromObject(list);//将List类型转化为JSONArray对象,方便转化为JSON字符进行传送
        send = jsonSend1.toString();//转换为JSON字符串,进行数据传送

若不进行数据传送,遍历即可获取数据如下

     for (Map<String, Object> map:lists){
             System.out.println(map);
        }

其二是将返回类型封装成为对象,然后封装进List集合中,例如List类型,若是要向前端传送数据的话,用JSONArray将其转化为JSON对象,然后转化为JSON 字符串类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱吃小巴掌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值