Spring mvc 如何在SpringMVC中发布JSON

Spring mvc 如何在SpringMVC中发布JSON,spring-mvc,request,Spring Mvc,Request,我的控制器和模型类如下所示: @Controller @RequestMapping("/apkinfo") public class ApkInfoController { public @ResponseBody String registerApk(@RequestBody ApkInfoReq req){ //Do something } } public class ApkInfo implements Serializable { priv

我的控制器和模型类如下所示:

@Controller
@RequestMapping("/apkinfo")
public class ApkInfoController {


  public @ResponseBody String registerApk(@RequestBody ApkInfoReq req){
         //Do something
  }
}

public class ApkInfo implements Serializable {

     private String deviceId;
     private List<ApkInfo> apkinfo;

     //gettters and setters
}

public class ApkInfo  implements Serializable {

     private String appName;
     private String packageName;
     private String version;
     private Date installDate;
}
但我得到一个错误“未移植的MediaType”。我的applicationContext.xml中有Jackson映射设置,其他方法的@ResponseBy工作正常

applicationContext.xml

<context:component-scan base-package: "xx.xx.xxxxx.xx";
<contex:annotation-config />
<mvc:annotation-driven />

<bean id="jacksonMappingConverter"    class="org.springframework.htttp.converter.json.MappingJacksonHttpMessageConverter">

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
    <property name="messageConverters">
        <list>
              <ref bean ="jacksonMappingConverter" />
        </list>
   </property>
</bean>

类路径中是否有jackson jar?您还可以在方法处理程序上添加@RequestMapping(value=“/mapping”,consumes=MediaType.APPLICATION\u JSON\u value)参见此示例-

从:“数据”…转换为查询字符串(如果尚未转换为字符串)

因此,如果不将
param
转换为代码中其他地方的
JSON
字符串,则不会将
JSON
发送到服务器

data: JSON.stringify(param)

我想是的。在我的pom.xml:org.codehou.jackson-jackson-mapper asl 1.9.12中,谢谢你的观点。我设置了contentType:applicationin/json,我可以像这样接收json处理的请求:$.ajax({url:'my_-url',contentType:'application/json',data:{param:{deviceId:'1234',apkinfo[{},{}]},}},});public@ResponseBody String registerApk(@RequestBody String param){//Do something}但我无法将JSON转换为ApkInfoReq对象。无论如何,我将按照您所说的那样尝试。我添加了类的installDate字段,该字段缺失,并且headers=“Content Type=application/JSON“在控制器类中。现在我收到了“错误请求”错误。@JavaScript代码中的shungun
installDate
是一个
字符串,不是标准格式。我建议改用
Date
对象。我现在解决了这个问题。问题是ApkInfoReq类中的apkinfo字段alpahbet案例。字段public void setApkInfo(List apkInfo)的setter因此,我认为Jackson mapper试图使用apkInfo作为键名,但我的字段是“apkInfo”,全部小写。我改变了这个案子,现在它成功了。谢谢,伙计们。
var param = { deviceId: '1234', ...
$.ajax({ ... data: param, ...
data: JSON.stringify(param)