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代码中的shunguninstallDate
是一个字符串,不是标准格式。我建议改用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)