Spring @Requestbody没有映射到内部类
我正在使用Spring 4.x进行Spring Rest Api项目
Controller.java
@PostMapping("newTransaction")TransactionRequestModel insertNewTransaction(@RequestBody TransactionRequestModel model){
//do something
}
TransactionRequestModel.java
public class TransactionRequestModel { private int id;
private List<KeyValue> keyValueList;
public TransactionRequestModel(){}
//default constructor
//getter-setter
}
KeyValue.java
public class KeyValue { String key;
String value;
//default constructor
//setter-getter
}
请求正文
{ "id": 1
"keyValueList": [
{
"key": "dummy",
"value": "dummy"
}
]
}
使用杰克逊的Spring消息转换器工作正常。
当我将 TransactionRequestModel.java 更改为以下内容(并删除 KeyValue.java )时
public class TransactionRequestModel { public class KeyValue {
String key;
String value;
//default constructor
//setter-getter
}
private int id;
private List<KeyValue> keyValueList;
public TransactionRequestModel(){}
//default constructor
//getter-setter
}
意味着,将 KeyValue设置 为 ,会出现以下错误。
org.springframework.http.converter.HttpMessageNotReadableException:无法读取文档:未找到类型[简单类型,类com.example.model.TransactionRequestModel
$ KeyValue]的合适构造函数:无法从JSON对象实例化(缺少默认构造函数或创建者,还是需要添加/启用类型信息?)
SO中的所有相关文章都提到了第一种情况。我想知道为什么这行不通。请帮忙。
回答:
你必须使自己的内在阶级static
。
public class TransactionRequestModel { public static class KeyValue {
String key;
String value;
//default constructor
//setter-getter
}
private int id;
private List<KeyValue> keyValueList;
public TransactionRequestModel(){}
//default constructor
//getter-setter
}
以上是 Spring @Requestbody没有映射到内部类 的全部内容, 来源链接: utcz.com/qa/433621.html