создать массив javascript в ответе json на Java - PullRequest
0 голосов
/ 11 апреля 2011

У меня есть сервлет, куда я отправляю ответ 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?

Ответы [ 3 ]

1 голос
/ 11 апреля 2011

Если вы отправите 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
0 голосов
/ 11 апреля 2011

Это отличный вопрос. JSON может вернуть массив так же просто, как

{"responseStr": [[1], [2], [3], [4]}

Cool!

Двойные кавычки не нужны, если вы не хотите, чтобы они были в виде строк.

Еще одна вещь, вы также можете иметь многомерные массивы!

{"responseStr": [[1,10], [2,20], [3,30], [4,40]]}

Эта ссылка является отличной ссылкой:

http://json.org/fatfree.html

0 голосов
/ 11 апреля 2011

В своем ответе задайте тип контента 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 вы можете просто использовать ( reference ):

var myArray = responseJSONObject.responseStr;

Вы можете использовать JSON.js для различных задач.

...