0
var  data = [
        {lastName: "Dente", name: "Al"},
        {lastName: "Noring", name: "Constance"},
        {lastName: "Haas", name: "Jack"},
        {lastName: "Tress", name: "Matt"},
        {lastName: "Turner", name: "Paige"}
    ];

这是我要创建的 javascript 数组。如何从 servlet 发送此数据并在 javascript 中创建数组对象。

String dataString=/*prepare data */
response.getWriter().write(dataString);

如何在 servlet 中准备此 dataString 以及如何在客户端中从该字符串创建数组?

4

2 回答 2

2

如果您有以下 Java 类:

public class Person {
    private String lastName;
    private String name;

    public Person(String lastName, String name) {
        this.lastName = lastName;
        this.name = name;
    }

    /* getters and setters */
}

然后,您可以使用Gson通过以下方式轻松生成数据:

List<Person> people = new ArrayList<Person>();

people.add(new Person("Smith", "John"));
people.add(new Person("Example", "An"));

String json = gson.toJson(people);

然后该json变量的值为[{"lastName": "Smith", "name": "John"},{"lastName": "Example", "name": "An"}]

然后只需将其作为 servlet 的响应发送,记住将请求的内容类型设置为application/json.

为了处理 JavaScript 中的数据,我建议使用 jQuery 的.getJSON()方法,例如

$.getJSON('url of servlet', function (data) {
    console.log(data); // <-- data will be an Array containing two objects
});
于 2012-10-09T10:53:20.490 回答
1

用于net.sf.json.JSONObject在服务器端实现此目的

服务器端:

public class Data {
    String lastName;
    String name;
//......constructors,getters,setters
}

ArrayList<Data> serverData = new ArrayList<Data>();
serverData.add(new Data("Fred", "Flintstones"));
serverData.add(new Data("Wilma", "Flintstones"));
String jsonStr = JSONObject.fromObject(serverData);
response.getWriter().write(jsonStr);

JSON.parse在客户端使用

客户端:

function ajaxCallback(data) {
    var jObj = JSON.parse(data);
    for(var i in jsonObject)
    {alert(jObj[i].name+" "+jObj[i].lastName);}
}

希望这可以帮助!

于 2012-10-09T11:45:43.040 回答