1
我是一个丢失位,我不得不承认。我写了一个弹簧引导(1.3M2)应用程序,其接收它需要在数据库中存储一个JSON对象:Spring引导/ Jackson反序列化JSON的错误类型
@RequestMapping(value = "/fav", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<String> setFavorite(@RequestBody List<Favorite> favorites) {
...
内部此方法传递JSON,其通过在数据库中存储线它线的另一种方法:
jdbcTemplate.batchUpdate(INSERT_FAVORITE, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
Favorit fav = favorites.get(i);
ps.setString(...
}
@Override
public int getBatchSize() {
int size = favorites.size();
return size;
}
当我POST一个JSON到与我的收藏对象的结构不匹配的控制器时,我只能在我的数据库中看到空值。很显然,杰克逊尽我所能将我的JSON转换为Java对象,但失败并将其找不到值的对象的所有值设置为null。 然后将这种空对象列表写入数据库。
我使用curl POST值
curl -vX POST https://localhost/fav -d @incorrectype.json
这不可能是错误的来源,因为它有一个favorite.json工作。如果我使用不匹配的JSON,如何检测我的控制器/ Jackson?
你使用Jackson的'@ Json *'注释还是只使用POJO:s? – zrvan
作为旁注,'produce = MediaType.APPLICATION_JSON_VALUE'并返回'ResponseEntity'有点奇怪的组合,你的意思是'消费'吗? –
zrvan