Reputation: 279
i am creating json object to save data and then sending it to the servlet. But when i try to retrieve the object and display its contents in java servlet, it throws me an error saying " A JSONObject text must begin with '{' at 1 [character 2 line 1]". I do not know how to display the json object in java which is been sent from javascript. Here's what i am doing:
Javascript Code:
var arrayOfObjects = [];
arrayOfObjects.push({"divid":imageinc,"xCordinates":Xcord,"yCordinates":Ycord,"Height":canvasWidth,"Width":canvasHeight, "PageNo":pageNum});
Displaying Javascript contents:
for (var i = 0; i < arrayOfObjects.length; i++) {
var object = arrayOfObjects[i];
for (var property in object) {
alert(property + '=' + object[property]);
}
}
Sending object to servlet with jquery Ajax:
var param = 'objarray=' +arrayOfObjects;
$.ajax({
url: '/ProjectName/finalXmlServGen',
type: 'POST',
dataType: 'json',
data: param,
success: function(result) {
alert('SUCCESS');
}
});
I get success message once i call the ajax. Now, i am receiving this object in servlet as:
String objarray = request.getParameter("objarray").toString();
try {
JSONObject jsonObj = new JSONObject(objarray);
String xmlString= XML.toString(jsonObj);
System.out.println("JSON to XML: " + xmlString);
} catch (JSONException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
The message i see in my console is the error " A JSONObject text must begin with '{' at 1 [character 2 line 1]". How do i parse the object and form an xml or string?
Upvotes: 1
Views: 14603
Reputation: 5274
On the Java side of things you need to convert the JSON array to a Java POJO bean first to be able to (easily) do something with it. There are multiple APIs to do this; Google GSON and Jackson are two possibilities.
Jackson is used internally by Jersey, the reference implementation of the JAX-RS API; it works very well in my experience.
Upvotes: 3
Reputation: 382112
What you build isn't a "JSON object", but a plain javascript object.
You must encode your object in JSON :
var param = '?objarray=' + JSON.stringify(arrayOfObjects);
$.ajax({
url: '/ProjectName/finalXmlServGen'+param,
type: 'POST',
dataType: 'json',
success: function(result) {
alert('SUCCESS');
}
});
Or you may let jQuery do the encoding :
$.ajax({
url: '/ProjectName/finalXmlServGen',
type: 'POST',
dataType: 'json',
data: {objarray: arrayOfObjects}
success: function(result) {
alert('SUCCESS');
}
});
Upvotes: 5