1. "A JSONObject text must begin with '{' at character 1 of ..."错误。
在前台向后台传数组时,使用到了 “JSON.stringify(retrieveList);”方法。
如果要前台发送的是Object,后台需要用“net.sf.json.JSONObject.fromObject(str_retrieveList);”进行转换;
如果要前台发送的是Array,后台需要用"net.sf.json.JSONArray.fromObject(str_retrieveList);"进行转换。
例:
前台发送Object
var rowObj = new Object();
rowObj.id = "1";
rowObj.name = "Name";
$.ajax({
url: "/addPerson",
data: { "person": JSON.stringify(rowObj)},
dataType: "json",
type: "POST"});
HttpServletRequest request = ServletActionContext.getRequest();
String str_person = request.getParameter("person");
net.sf.json.JSONObject jsonObject = net.sf.json.JSONObject.fromObject(str_person);
前台发送Array
var rowList = new Array();
var rowObj = new Object();
rowObj.id = "1";
rowObj.name = "Name";
rowList.push(rowObj);
$.ajax({
url: "/addPerson",
data: { "personList": JSON.stringify(rowList)},
dataType: "json",
type: "POST"});
HttpServletRequest request = ServletActionContext.getRequest();
String str_person = request.getParameter("person");
net.sf.json.JSONArray jsonArray = net.sf.json.JSONArray.fromObject(str_person);
2. Json字符串转为object。
前台使用XMLHttpRequest时,Json字符串在xhr.responseText中,用此方法能将字符串转为对象。
var jsonObj =(new Function("","return "+str_json))();