我正在使用 SpringBoot 和 Jquery with Ajax 编写一个 crud 应用程序。我收到以下异常



我正在使用 SpringBoot 和 Jquery with Ajax 编写一个 crud 应用程序。我得到以下异常: (我在尝试添加新用户时遇到异常(

.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of 
`ru.javamentor.predproject3.model.User` out of START_ARRAY token; nested exception is 
com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of 
`ru.javamentor.predproject3.model.User` out of START_ARRAY token
at [Source: (PushbackInputStream); line: 1, column: 1]]

这是我的js。GET 方法工作正常。

$(document).ready(function () {
gettingListOfUsers();
addingUser();
});
function gettingListOfUsers() {
$.ajax({
url: '/rest/users',
type: 'GET',
dataType: 'json',
success: function (listOfUsers) {
let userData = '';
$.each(listOfUsers, function (index, user) {
userData += '<tr>';
userData += '<td>' + user.id + '</td>';
userData += '<td>' + user.firstName + '</td>';
userData += '<td>' + user.secondName + '</td>';
userData += '<td>' + user.email + '</td>';
userData += '<td>' + user.role + '</td>';
userData += '<td> <button class="btn btn-info" data-toggle="modal">update</button> ' +
'<a class="btn btn-danger" onclick="if (!(confirm('Are you sure you want to delete this user?'))) ' +
'return false">delete</a></td>';
userData += '</tr>';
});
$('#userTable2').html(userData);
},
error: function (error) {
alert("Error");
}
})
}
function addingUser() {
$('#addingButton').on('click', function (event) {
event.preventDefault();
const addingFormData = $('#addingUserForm').serializeArray();
// alert(addingFormData.length);
$.ajax({
url: '/rest/adding',
type: 'POST',
data: JSON.stringify(addingFormData),
dataType: 'json',
contentType: "application/json",
success: function (responseData, status, jqXHR) {
alert('User has been added successfully');
gettingListOfUsers();
},
error: function () {
alert('Error');
}
})
})
}

我的程序甚至没有达到控制器。它落在错误块中

@PostMapping("/添加"(

public ResponseEntity<User> addingPost(@RequestBody User user) {
HttpHeaders httpHeaders = new HttpHeaders();
user.setPassword(passwordEncoder.encode(user.getPassword()));
userService.addUser(user);
return new ResponseEntity<>(user, httpHeaders, HttpStatus.CREATED);
}

错误消息准确地说明了问题所在。它想从一块 jason 中创建一个 User(需要一个 jason 对象(,但你从请求发送的字符串以[开头,表示一个数组。

如果您发布控制器,我可以有更好的主意。 似乎您正在将 json 字符串反序列化为 json 对象。 如果这是真的,则您有一个格式错误的 json 字符串,您可能没有初始大括号。

编辑

我仔细检查了一下,我认为您的问题出在 JS 代码中。

$('#addingButton').on('click', function (event) {
event.preventDefault();
const addingFormData = $('#addingUserForm').serialize();
// alert(addingFormData.length);
$.ajax({
url: '/rest/adding',
type: 'POST',
data: addingFormData,
dataType: 'json',
contentType: "application/json",
success: function (responseData, status, jqXHR) {
alert('User has been added successfully');
gettingListOfUsers();
},
error: function () {
alert('Error');
}
})
})

相关内容

最新更新