Java String для JsonObject возвращает null - PullRequest
0 голосов
/ 20 июня 2020

Я пытаюсь преобразовать String в JSONObject, но всегда возвращает null.

На первой странице я использовал $.ajax для отправки данных сообщения,

    var jsonInfo = '{"search_key":"apple", "person":{"name":"test","age":20}}';
    
    var testApi = $.ajax({
        type : "POST", 
        url : "/test/testPerson",
        dataType : "json",
        data : {
            "apiData" : JSON.stringify(jsonInfo)
        }
    })
    .done(function(data, status){
        console.log("success!" + status);
    });

В сервлете, Я попытался получить JSONObject со следующим кодом:

    JSONObject jsonObject = new JSONObject();
    JSONParser parser = new JSONParser();
    Object obj = null;
    try {
        obj = parser.parse(reqApiKey2);
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    
    jsonObject = (JSONObject) obj;

Но я получил сообщение об ошибке java.lang.ClassCastException: java.lang.String cannot be cast to org.json.simple.JSONObject at jsonObject = (JSONObject) obj;

Я попытался отправить данные с помощью JSON.parse(jsonInfo) из Интернета , но результат тот же.

Спасибо за советы и помощь.

1 Ответ

1 голос
/ 20 июня 2020

Ваш клиентский код превращает json в переменной jsonInfo в простую строку. Не делайте этого - это уже JSON!

Измените:

data : {
    "apiData" : JSON.stringify(jsonInfo)
}

на:

data : {
    "apiData" : jsonInfo
}

Код вашего сервера правильно десериализуя его как String, а не как объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...