【问题标题】:Simple JSON-String Query简单的 JSON 字符串查询
【发布时间】:2014-06-24 12:29:29
【问题描述】:

我正在开发一个在客户端使用 AJAX 请求并在服务器端使用 Servlet 的 Web 应用程序。

我的目标是将Javascript对象发送到服务器,然后在那里进行一些操作并将其发送回此处显示。

假设我的 js 对象是

var obj={hero:"Spiderman",name:"Peter Parker"};

我的方法

1.将obj转成JSON字符串并发送

var str= JSON.stringify(obj);
xmlhttp.open("POST",myurl,true);
xmlhttp.setRequestHeader("Content-Type","application/json",true);
xmlhttp.send("data="+str); 

2。接收字符串,将其转换回 JSON,将“name”操作为“Bruce Wayne”并将其作为字符串发送回

3.接收并转换回Json

var data= JSON.parse(xmlhttp.responseText);

我在第二点苦苦挣扎。我正在使用 org.json。我搜索并阅读了文档,但在我的上下文中找不到将字符串转换为 json 和 JAVA 中的反之亦然的满意答案。

如果可以提供简单的工作代码或指向一些我可以学习的链接,那将非常有帮助。

附注:

我不能像使用 AngularJS 一样使用 Jquery。 See Why?

我将始终发送有效的 JSON 字符串。

我可以使用其他 JSON 库。如果它比 org.json 好并满足我的需求。 请提供其jar下载链接。

【问题讨论】:

标签: java javascript ajax json


【解决方案1】:

假设您能够在服务器代码中提取data

这就是您可以使用org.json 的方法:

JSONParser parser = new JSONParser();
JSONObject requestObj = (JSONObject) parser.parse(data);
String name = (string)requestObj.get("name");
name = "Bruce Wayne";

创建响应的代码如下所示:

JSONObject response = new JSONObject();
response.put("name",name);
return response.toJSONString();

这假定您的服务器方法返回 String 类型

如果您使用 Servlet,您可以使用 HttpServletResponse object res 创建响应,例如:
res.setContentType("application/json"); OutputStream os = res.getOutputStream(); os.write(response.toString().getBytes()); os.close();

【讨论】:

  • 为什么name = "Bruce Wayne" 会改变值?我希望将name 的值更改为新字符串,但保持requestObj 的属性不变。
  • 它不会改变原来的 JSON 对象。这将在需要作为字符串返回的新 JSON 对象中使用。
  • 为什么要创建一个 new JSON 对象呢?只需更改您刚刚创建的属性中的属性,然后将其发回即可。
  • 这取决于 OP。该代码应该有望提供有关如何进行第 2 步的想法。
  • 不知道有任何类似的教程。这是我在工作中所做的事情。我相信你可以很容易地用谷歌搜索:)
猜你喜欢
  • 1970-01-01
  • 2021-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多