1

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?

2 Answers 2

5

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');
     }
});
Sign up to request clarification or add additional context in comments.

2 Comments

doing this it gets me this error "404 (Servlet default is not available)" var param = 'objarray=' + JSON.stringify(arrayOfObjects); $.ajax({ url: '/ProjectName/finalXmlServGen', data: param, This works fine. I get success message. But in servlet i still receive the error that "{" part is missing. Thanks
Thats perfectly ok. Worked. Now how do i print this object in my java file? Thanks
3

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.