我正在创建json对象以保存数据,然后将其发送到servlet。但是,当我尝试检索该对象并将其内容显示在Java Servlet中时,它抛出一个错误,提示“ JSONObject文本必须在1 [字符2行1]处以’{‘开头。我不知道如何在Java中显示从javascript发送的json对象。这是我在做什么:
JavaScript代码:
var arrayOfObjects = []; arrayOfObjects.push({"divid":imageinc,"xCordinates":Xcord,"yCordinates":Ycord,"Height":canvasWidth,"Width":canvasHeight, "PageNo":pageNum});
显示Javascript内容:
for (var i = 0; i < arrayOfObjects.length; i++) { var object = arrayOfObjects[i]; for (var property in object) { alert(property + '=' + object[property]); } }
使用jQuery Ajax将对象发送到servlet:
var param = 'objarray=' +arrayOfObjects; $.ajax({ url: '/ProjectName/finalXmlServGen', type: 'POST', dataType: 'json', data: param, success: function(result) { alert('SUCCESS'); } });
调用ajax后,我会收到成功消息。 现在,我在servlet中收到以下对象:
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(); }
我在控制台中看到的消息是错误“ JSONObject文本必须在1 [字符2行1]处以’{‘开头”。我如何解析对象并形成xml或字符串?
在Java方面,您需要首先将JSON数组转换为Java POJO bean,以便能够(轻松地)对其进行操作。有多种API可以做到这一点;Google GSON和Jackson是两种可能性。
杰克逊在泽西内部使用,JAX-RS API的参考实现;根据我的经验,它效果很好。