这是Rest Controller Service签名
@RequestMapping(value = "/getFilteredReport", method = RequestMethod.POST)
public void getFilteredReport(@RequestBody FilteredReportVO filteredReportVO,HttpServletRequest request,HttpServletResponse response) {
现在,下面是我发送的JSON结构
{
"filterAttributesFactory":{
"930000":{
"metaDataId":930000,
"displayText":"Select Category",
"attributeType":211009,
"userInputValue":null,
"dropDownoptions":null,
"isMandatory":false,
"isDropDown":false,
"defaultValue":null,
"isdefaultValue":false,
"constraintId":null
},
"930001":{
"metaDataId":930001,
"displayText":"Item Status",
"attributeType":211005,
"userInputValue":null,
"dropDownoptions":{
"157005":"FC - fake scrap",
"157006":"FH - firearm hold",
"157008":"IN - inventory"
},
"isMandatory":false,
"isDropDown":true,
"defaultValue":null,
"isdefaultValue":false,
"constraintId":213007
}
},
"reportId":132030,
"location":1202
}
以下是 FilteredReportVO POJO
public class FilteredReportVO {
private HashMap<Integer,FilterAttributeVO> filterAttributesFactory=new HashMap<Integer,FilterAttributeVO>();
private Integer reportId;
private Long location; .....GETTERS and setters below
FilterAttributeVO pojo结构在下面..
public class FilterAttributeVO {
Integer metaDataId;
//String elementName;
String displayText;
Integer attributeType;
Object userInputValue;
Map<Integer,String> dropDownoptions;
Boolean isMandatory=false;;
Boolean isDropDown=false;
Object defaultValue;
Boolean isdefaultValue=false;
Integer constraintId=null;...Getters n setters..
我通过POSTMAN插件点击服务。 得到错误:
“由于语法错误,服务器无法理解请求。客户端不应该在没有修改的情况下重复请求”。
在POSTMAN中的FYI我将JSON结构放在“Body”中,选择“raw”,输入“JSON(application / json)”。
注意我在 FilteredAttributeVO 对象 类型属性 userInputValue 和 defaultValue >。 R我们允许保留对象类型吗?
这里的问题在哪里?
答案 0 :(得分:1)
如果您看到使用JSONlint输入JSON的屏幕截图,则您的json无效。请修复您的json对象并使用jsonlint验证它
你可以尝试在你的测试中使用以下代码来解决这个问题,因为Spring内部使用了Jackson库
ObjectMapper mapper = new ObjectMapper();
Staff obj = mapper.readValue(jsonInString, FilteredReportVO.class);
如果这样可以正常使用,那么它们应该与您的邮递员RequestBody准备有关,否则您将获得详细的堆栈跟踪:)
答案 1 :(得分:1)
问题在于 FilteredReportVO POJO。我正在设置属性的值&#34; location &#34;和&#34; reportId &#34;通过构造函数。 这两个属性没有定义setter方法。
这是我的不好,如果我会发布完整的POJO课程,你们一定已经弄明白了。无论如何,谢谢大家的帮助