【问题标题】:return json array from spring controller从spring控制器返回json数组
【发布时间】:2017-04-13 08:29:51
【问题描述】:

我想用我的控制器返回一个 JSONARRAY,但是在运行时我收到了这个错误:

java.lang.IllegalArgumentException:没有找到类型返回值的转换器:类 org.codehaus.jettison.json.JSONArray

这是我的代码:

@RequestMapping(value = "/generate", method = RequestMethod.GET)
@ResponseBody
public JSONArray generate() throws NoSuchFieldException, CloneNotSupportedException{

        return facturationSvc.facturer();
}

注意:服务 "facturationSvc" 的方法 "facturer()" ,返回一个 JSON ARRAY

【问题讨论】:

    标签: java json spring spring-mvc controller


    【解决方案1】:

    您应该返回一个 java 列表,而不是 JSONArray。 Spring 使用 Jackson,jackson 的目的是将 java 对象与 JsonArray 等基本元素相互转换,然后转换为 Json String

    你不需要直接管理json,Spring帮你搞定,所以这里的解决方案是改变你的返回类型(控制器和服务的),只管理java对象

    @RequestMapping(value = "/generate", method = RequestMethod.GET) 
    @ResponseBody public List<YourFacturerClass> generate() {
    
        return facturationSvc.facturer();
    
    }
    

    【讨论】:

    • 是的,我就是这么做的。谢谢
    【解决方案2】:

    你应该返回字符串而不是 JSONArray,

    String generate() throws NoSuchFieldException, CloneNotSupportedException{
    
          return facturationSvc.facturer().toString();
    }
    

    【讨论】:

    • 可以,但是在Spring我们不需要直接使用JsonArray
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 2011-01-20
    • 2011-06-14
    相关资源
    最近更新 更多