Не могу отпарсить JSON

Нужно получить данные вот из такого JSON`a:

{
"timeStamp":"2022-04-05T13:51:06.6688191",
"statusCode":200,
"status":"OK",
"message":"Races retrieved",
"data":  
       [
        {"id":"1","carOwner":"Sergiy","time":"35s","date":"04/04/22","carToken":"dwafdawfaegfadfrfsvsf"},
        {"id":"2","carOwner":"Roman","time":"37s","date":"04/04/22","carToken":"dwafdawfaegffasadfrfsvsf"},
        {"id":"3","carOwner":"Yura","time":"36s","date":"04/04/22","carToken":"dwafdawfsacaegffasadfrfsvsf"},
        {"id":"4","carOwner":"Nazar","time":"55s","date":"04/04/22","carToken":"dwafdawfsacaegffas"},
        {"id":"5","carOwner":"Arsen","time":"34s","date":"04/04/22","carToken":"dwwfsacaegffas"}
       ]
}

Код JS:

JavaScript не учил от слова совсем, писал бэкенд, не ругайтесь

xhr.onload = function() {
    var object = xhr.response;
    for (var i=0;object.data.length;i++) {
        var owner = object.data[i].carOwner;
    }
    alert(owner);
    };

При попытке получаю вот такое:

введите сюда описание изображения

вот REST Controller на бэкенде:

@GetMapping("/list")
public ResponseEntity<Response> getRaces() {
    return ResponseEntity.ok(
            Response.builder()
                    .timeStamp(now())
                    .data(raceService.findAll()) //return List<Race>
                    .message("Races retrieved")
                    .status(OK)
                    .statusCode(OK.value())
                    .build()
    );
}


console.log(object.data[0]['carOwner'])

введите сюда описание изображения


Ответы (1 шт):

Автор решения: kostik-rak

А можно целиком код с запросом а не с момента xhr.load... Возможно забыли перевести "ответ" в JSON так как с сервера приходит в виде строки, а не массив данных. Перевести можно таким образом xhr.responseType = 'json'; или таким JSON.parse(xhr.response)

Не понятно какого результата ты ждешь... переписывая переменную в теле цикла. Исправил твой цикл с переменной возможно угадал

var object = xhr.response;
    var owner = '' //если нужна строка
    var arrOwner = []//если нужен массив
    for (var i=0; i<object.data.length; i++) {
         owner += object.data[i].carOwner + ' ';
         arrOwner.push(object.data[i].carOwner)
    }
    alert(owner);
    alert(arrOwner);
    

→ Ссылка