在struts动作类中,JSON对象变为null

时间:2012-07-02 04:57:59

标签: json class struts struts-action

我在struts 1.3中工作,我正在将json对象构建为javascript并将JSON对象传递给我的struts动作类,但是当我收到json时,它在这里传入null是我的示例代码

 var dataobj=[{code:c1,name:n1}];

$.ajax({
type: "POST",
url: "addtier.do",
dataType: "json"
data: "data?="+dataobj;
});

动作类代码

 JSONObject jObj    = new JSONObject();
 JSONObject newObj = jObj.getJSONObject(request.getParameter("data"));
 Enumeration eNames = newObj.keys(); //gets all the keys

 while(eNames.hasNextElement())
 {
     // Here I need to retrieve the values of the JSON string
     // and add it to the session
 }

这一行是空的

request.getParameter("data");

并在解析时提供异常

 JSONObject newObj = jObj.getJSONObject(request.getParameter("data"));

实际上我做错了什么。我不明白 是我的json数据是错误的格式或其他东西 任何暗示都会给我很大的帮助

2 个答案:

答案 0 :(得分:0)

var dataobj=[{code:c1,name:n1}];

$.ajax({
type: "POST",
url: "addtier.do",
dataType: "json"
data: dataobj;
});

好像您要将数据参数设置为data?=[Object]

试试console.log('data?='+dataobj);,你会看到我的意思。

如果您应该为其提供字符串而不是jaon对象,那么您首先需要JSON.stringify(dataobj)

另一个问题是它可能需要发送一个json对象而不是一个json数组,所以它仍然无法正常工作尝试确保dataobj是:{data:[{key:"val",key2:"val2"}]}

答案 1 :(得分:0)

你可以用这个:

String jsonData = request.getReader().readLine();

而不是:

String jsonData = request.getParameter("data");

注意:在Javascript中使用POST发送(jsonData)