在sling servlet中传递一个对象数组

时间:2013-12-05 15:37:24

标签: java jquery servlets cq5

我有一组对象。

var mydata1 = {};
var mydata2={};
mydata1.name="john";
mydata2.class="third";
mydata2.name="pan";
mydata3.class="second";
var dataArray= new Array();
dataArray[0]=mydata1;
dataArray[1]=mydata2;

in ajax call
  jQuery.ajax({
        url: '/myservlet',
        type: 'POST',
        data: dataArray,
        async: false,
        success: function(result) {
            alert("Saved Node.")
        },
        failure:function(result) {
            alert("Not Saved")
        }
    });

对象是必需的,因为对象中的值是动态的。将来会改变。如何通过ajax传递这种对象。 我们可以改成JSON吗?但是也需要在servlet中进行迭代。 提前谢谢。

1 个答案:

答案 0 :(得分:3)

在数据阵列上使用JSON.stringify()函数将其序列化为JSON格式:

jQuery.ajax({
    url: '/myservlet',
    type: 'POST',
    data: JSON.stringify(dataArray),
    ...

然后,您可以使用JSONArray

读取servlet中的JSON
String requestData = request.getReader().readLine();
JSONArray array = new JSONArray(requestData);
// to get name property of the first object:
array.getJSONObject(0).getString("name");

创建的JSON只是一行文本,因此我们不需要从请求阅读器中读取更多行。