Парсинг значения, из ответа на GET запрос
Всем доброго. Подскажите, как спарсить значение из строки is_error_send
(0 или 1):
{"count":1,
"code":0,
"data":[
{
"id":01010101,
"phone":"79111111111",
"date":"2000-01-1 01:01:11",
"msg":"test",
"id_device":1111,
"send_to_phone":"2000-01-1 01:01:1",
"is_send_to_phone":1,
"is_send":1,
"send":"2000-01-1 01:01:1",
"is_delivered":1,
"delivered":"2000-01-1 01:01:11",
"is_cancel":0,
"cancel":null,
"is_error":0,
"is_error_send":0,
"error_date":null,
"is_out":0,
"type":2,
"my_id":{}
}
]
}
с помощью responseText.replace(/[^\\d]/g, '').slice(0, 1)
, в этом случае данное выражение берет первую цифру, а у меня задачка по сложнее...
Вот пример реализации, увы не работает:
var xap = new XMLHttpRequest();
xap.open('GET', 'https://site.ru/api/out.php?token=1111&device=0101&start_id=0101&end_id=0101', true);
xap.send();
xap.onreadystatechange = function(){
if(xap.readyState == 4){
if(xap.status == 200){
console.log('result', responseText.data[0].is_error_send);
}
}
}
Ответы (2 шт):
Вначале надо сделать перевод текста в обычный json:
let obj = JSON.parse(responseText);
Теперь можно обращатсья с переменной obj
, как с обычным объектом: свойствам обращатсья через точку, а к элементам массива - по индексу
Кстати, должно быть не responseText
, а xap.responseText
Если указать тип ответа xap.responseType = "json";
, то никакие JSON.parse
уже не нужны будут
Я бы вам рекомендовал использовать более современные способы отправки данных, например fetch
fetch('https://site.ru/api/out.php?token=1111&device=0101&start_id=0101&end_id=0101', {
method: 'GET'
})
.then(res => res.json()) // Преобразуем ответ в json
.then(responseText => console.log(responseText.data[0].is_error_send))
fetch сделает GET запрос по указанному адресу, когда вернется ответ, его обработает первый .then() и преобразует ответ(это текст) в формат объекта(JSON).
Далее вызов будет передан во второй .then() где уже можете делать с полученным объектом необходимые действия.
В примере выше, вывод значения в консоль