项目场景:
通过前端传入的json数据,直接接收为javabeen
代码详情:
js代码: var detailData = {};
detailData["id"]="23333";
detailData["name"]="电脑";
$.ajax({
type : "post",
url : "/api/assets/test",
data :JSON.stringify(detailData),
traditional : true,
async : true,
dataType : 'JSON',
contentType : 'application/json;charset=UTF-8',
timeout : 6000,
cache : false,
error : function(data) {
console.log("获取sap数据失败!访问接口过程出错!"+JSON.stringify(data));
},
success : function(data) {
console.log("访问接口结果如下:"+JSON.stringify(data));
}
});
}
entiy类:c
@JsonInclude(JsonInclude.Include.NON_DEFAULT)
public class TestEntiy {
@QueryParam("id")
private String id;
@QueryParam("name")
private String name;
public String getId() {
return id;
}
@QueryParam("list")
List<AssetsIdEntity> list=new ArrayList<>();
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public TestEntiy(String id, String name) {
this.id = id;
this.name = name;
}
}
api接口
@Path("/assets")
public class AssetsActionApi {
@POST
@Path("/test")
@Produces({MediaType.APPLICATION_JSON})
@Consumes(MediaType.APPLICATION_JSON)
//我们这里限制了@Consumes 传入参数类型 前段ajax需要添加 请求数据类型的参数: contentType : 'application/json;charset=UTF-8',
public String test(@BeanName TestEntiy entiy){
//entiy直接传入service层,做数据处理
Map<String, Object> apidatas = new HashMap<String, Object>();
String str = new Gson().toJson(entiy);
System.out.println("获取的信息str:"+str);
apidatas.put("data", str);
return JSONObject.toJSONString(apidatas);
}
}
问题:
提示:这里填写问题的分析:
老是报数据类型错误,既然上面设置了json格式就不需要传入json格式,ajax设置: contentType : ‘application/json;charset=UTF-8’