#javascript #arrays #json #servlets #response
#javascript #массивы #json #сервлеты #ответ
Вопрос:
У меня есть сервлет, куда я отправляю ответ JSON (обратно на javascript). Например, мой ответ выглядит следующим образом
{
"responseStr":"1,5,119.8406677,7,7,116.5664291,10,10,116.6099319,20,10,117.2185898,25,3,115.2636185"
}
В данный момент происходит то, что я собираю данные (числа выше) в сервлете и отправляю их в ответе JSON в виде строки со значениями, разделенными запятыми. Когда этот ответ достигнет интерфейса, все эти числа должны перейти в массив javascript (где я выполняю свою дальнейшую логику). В настоящее время я делаю это с помощью
var res = JSON.parse(REQ.responseText);
var myArr = res.responseStr.split(',');
Я думаю, что вторая строка (где я использую split()) вызывает узкое место в моем приложении. Несколько точек данных, как в приведенном выше примере, не являются проблемой, но это становится проблемой, когда у меня есть тысячи точек данных.
Итак, мой вопрос заключается в том, есть ли способ, которым при создании моего ответа в сервлете я могу создать ответ в виде массива javascript, чтобы мне вообще не приходилось использовать split()? Есть ли лучшие способы достижения вышеупомянутой задачи преобразования ответа в массив javascript?
Ответ №1:
Если вы отправляете responseStr
в виде массива, когда JSON проанализирует его, это будет массив. Таким образом, вы могли бы отправить свой ответ JSON как «[1,2,3,4,5,6,7]» и так далее, и когда вы JSON.parse, он вернет массив.
Чтобы сделать его немного более понятным :
var arr = [1,2,3,4,5];
arr = JSON.stringify(arr); // "[1,2,3,4,5]" -- String
arr = JSON.parse(arr); // [1,2,3,4,5] -- Array
Ответ №2:
В вашем ответе задайте content-type JSON/application
и отправьте массив JSON
{
"responseStr":["1","5","119.8406677","7","7","116.5664291","10","10","116.6099319","20","10","117.2185898","25","3","115.2636185"]
}
Затем в вашем JavaScript вы можете просто использовать (ссылка):
var myArray = responseJSONObject.responseStr;
Вы можете использовать JSON.js для различных задач.
Ответ №3:
Это отличный вопрос. JSON может возвращать массив так же просто, как
{ «responseStr»: [[1], [2], [3], [4] }
Круто!
Двойные кавычки не нужны, если вы не хотите, чтобы они были строками.
Еще одна вещь, у вас тоже могут быть многомерные массивы!
{ «responseStr»: [[1,10], [2,20], [3,30], [4,40]] }
Эта ссылка является отличной ссылкой: