No converter found for return value of type: class org.json.JSONArray解决方法

初学springboot,最近在给自己做demo练手,遇到了如上json返回值转换错误的问题,报了500错误。
网上搜索到的方法大多说是添加json转换相关的依赖,楼主尝试了并没有成功,于是换了一种迂回的解决方式。
先附上前端代码(这里用了原生的ajax,没有用包装)

function showMyStudents(){
    var xhr=new XMLHttpRequest();
    xhr.onreadystatechange = function () {
        var html = "";
        if(xhr.readyState==4){
            if(xhr.status==200){
                res = xhr.responseText;
                console.log(res);
            }
        }
    }
    var currentPage=1;
    xhr.open("get","/showMyStudents?currentPage=" + currentPage,true);
    xhr.send(null);
}

以及原来的后端代码

@RestController
public class ShowMyStudents {
    @Autowired
    StudentRepository studentRepository;

    @GetMapping("/showMyStudents")
    public JSONArray showMyStudents(@RequestParam Integer currentPage,
                                 HttpSession session){
        Teacher teacher = (Teacher)session.getAttribute("teacher");
        List<Student> students = studentRepository.findStudentsByTeacherId(teacher.getId());
        JSONArray studentsJSON=new JSONArray(students);
        return studentsJSON;
    }
}

然而这样就报了如下错误
:
本来是考虑到,对于前端来说,JSONArray数据会比List数据更好处理。但事实上在有相关配置之后,@Responsebody注解会自动将对象转换为JSON格式从后端传出。
@Responsebody:用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
而@RestController是@Responsebody与@Controller的结合,所以已经可以自动转换JSON,无需传出JSONArray对象。
后端代码修改为:

@RestController
public class ShowMyStudents {
    @Autowired
    StudentRepository studentRepository;

    @GetMapping("/showMyStudents")
    public List<Student> showMyStudents(@RequestParam Integer currentPage,
                                 HttpSession session){
        Teacher teacher = (Teacher)session.getAttribute("teacher");
        List<Student> students = studentRepository.findStudentsByTeacherId(teacher.getId());
//        JSONArray studentsJSON=new JSONArray(students);
        return students;
    }
}

前端代码不变。运行成功。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值