Ошибка javax. json .stream.JsonParsingException: при выполнении вызова API AJAX - PullRequest
1 голос
/ 08 апреля 2020

Я разработал веб-программу, используя майку java на своем бэкэнде и jsp на своем. Когда я выполняю post вызов API с использованием Ajax, мой сервер получает следующее исключение:

javax.json.stream.JsonParsingException: Unexpected char 117 at (line
no=1, column no=1, offset=0)

Я думаю, что-то не так с данными, которые я передаю через вызов Ajax API .

Вот мой ajax вызов API:

var obj = JSON.parse('{ "userName":"John", "password":"hgvv", "img":"New York","fname":"kjbjk","lname":"bkbkkj","tp":"buhb","address":"jhbjhb","type":"user"}');


$.ajax({
    type: "POST",
    url: $url,
    contentType: "application/json",
    data: obj,
    dataType: 'json',
    success: function () {
        alert("successed");

    }
});

Это код, реализованный моим бэкендом:

@Path("testing")
public class test {
    UserRepository userRepo=new UserRepository();
    @Path("users")
    @POST
    @Consumes(MediaType.APPLICATION_JSON)
    @Produces(MediaType.APPLICATION_JSON)
public UserModel CreateUser(UserModel a) {
    userRepo.createUser(a);
    return a;
 }
}

1 Ответ

1 голос
/ 08 апреля 2020

Вы должны отправлять данные как JSON String, а не JSON Object. Избегайте JSON.parse из вашего кода.

var data = '{ "userName":"John", "password":"hgvv", "img":"New York","fname":"kjbjk","lname":"bkbkkj","tp":"buhb","address":"jhbjhb","type":"user"}';

В качестве альтернативы , я бы создал объект JS и применил к нему JSON.stringify. Таким образом, код будет более читабельным:

var data = {
    userName: "John",
    password: "hgvv",
    img: "New York",
    fname: "kjbjk",
    lname: "bkbkkj",
    tp: "buhb",
    address: "jhbjhb",
    type: "user"
};

$.ajax({
    type: "POST",
    url: $url,
    contentType: "application/json",
    data: JSON.stringify(data), // added JSON.stringify here
    dataType: 'json',
    success: function () {
        alert("successed");
    }
});
...