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