Как отправить массив JSON с сервера на клиент, т. Е. (Java в AJAX / Javascript)? - PullRequest
2 голосов
/ 16 августа 2011

В моем файле JSON.java есть следующий массив JSON:

ArrayList array=new ArrayList();
array.add("D");
array.add("A");
array.add("L");

Я хотел бы отправить массив в сценарий AJAX, расположенный в AJAX.jsp.Я знаю, как получить текст в AJAX, например,

document.getElementById("txtHint").innerHTML=xmlhttp.responseText;

Но я не знаю, как отправить массив с сервера на клиент!Ценю вашу помощь

Ответы [ 4 ]

0 голосов
/ 27 сентября 2012

Самый простой способ - создать строку json в файле java и вернуть эту строку json клиенту.

Javascript предоставляет метод eval(), который инвертирует строку json в объект json.

ТогдаВы можете выполнять любые необходимые операции.

0 голосов
/ 16 августа 2011

ок Первый:

ArrayList array=new ArrayList();
array.add("D");
array.add("A");
array.add("L");
JSONArray array = new JSONArray();

Это не может скомпилировать ... у вас есть дубликат массива переменных; -)

Второе: создайте сервлет / Struts Action / etc, который будет содержать код, который создаст ваш массив. Затем преобразуйте его в JSON с помощью библиотеки JSON. Наконец, вставьте строку в ответ вашего сервлета / Struts Action / и т. Д.

Используйте JQuery, чтобы облегчить свои усилия по вызову Ajax. Это поможет вам с вызовом Ajax и преобразованием обратно в Json из строки, полученной в ответе http.

Ex:

ваш ajax-вызов должен быть таким (с JQuery)

$.getJSON("http://yourserver/JSONServlet",
    function(data){
           alert (data) // this will show your actual json array
      });
    });

и ваш сервлет должен выглядеть так:

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import net.sf.json.JSONArray;

public class JSONServlet extends  HttpServlet{
  public void doGet(HttpServletRequest request,
  HttpServletResponse response)
   throws ServletException,IOException{
 JSONArray arrayObj=new JSONArray();
 arrayObj.add("D");
 arrayObj.add("A");
 arrayObj.add("L");
 arrayObj.add("D");
 arrayObj.add("A");
 arrayObj.add("TEST");
  PrintWriter out = response.getWriter();
  out.println(arrayObj);
  for(int i=0;i<arrayObj.size();i++){
  out.println(arrayObj.getString(i));
  }
 }
}
0 голосов
/ 18 августа 2011

Вместо использования библиотеки barebone-файлов org.json, как уже предлагалось, рассмотрите возможность использования библиотеки JSON для привязки данных, например Jackson или GSON (также есть много других), в этом случае Вы можете упростить случай сервлета (с Джексоном) до:

new ObjectMapper (). WriteValue (response.getOutputStream (), array);

и это все, что вам нужно.

А для еще более простой обработки сервисы JAX-RS (Jersey, RESTeasy, CXF) могут еще больше упростить обработку, чтобы сократить объем кода, который вам нужен по сравнению с необработанными сервлетами. JAX-RS + JSON - это современный способ реализации веб-сервисов на Java, поэтому, возможно, имеет смысл изучить его сейчас.

0 голосов
/ 16 августа 2011

вы в основном используете определенные классы в Java, как те, которые определены здесь: http://json.org/java/ конвертируйте окончательный вывод в строку json и затем отправляете его в javascript, где вы конвертируете строку json обратно в json, используя eval или, возможно, используябиблиотека под названием json2.js и все готово ..

вот код для того же:

JSONObject obj=new JSONObject();
  obj.put("name","foo");
  obj.put("num",new Integer(100));
  obj.put("balance",new Double(1000.21));
  obj.put("is_vip",new Boolean(true));
  obj.put("nickname",null);
  StringWriter out = new StringWriter();
  obj.writeJSONString(out);
  String jsonText = out.toString();
  System.out.print(jsonText);

для более http://code.google.com/p/json-simple/wiki/EncodingExamples

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