gpt4 book ai didi

java - 如何从 servlet 获取 JSON 对象?

转载 作者:行者123 更新时间:2023-11-28 11:40:58 25 4
gpt4 key购买 nike

我正在制作一个简单的 html servlet 程序,我需要从 servlet 获取 JSON 对象,并且在 html 中我能够获取数据,但我如何引用每个属性?

这是 servlet get 方法

    PrintWriter out=response.getWriter();
StringBuffer emps = new StringBuffer("{employees:[");
emps.append("{fullname:\"Abhishek Raj Simon\"},{email:\"a@a.com\"}]");
emps.append("}");
out.println(emps);

要发送的JS

function getJson()
{
var url_action="/temp/jsontest";
var form=document.forms["mainForm"];
var splitOutput;
var client;
var dataString;

if (window.XMLHttpRequest){
client=new XMLHttpRequest();
} else {
client=new ActiveXObject("Microsoft.XMLHTTP");
}

client.onreadystatechange=function(){
if(client.readyState==4&&client.status==200)
{
var res=client.responseText;
alert(res);
alert(client.responseText.employees.fullname); //DOES NOT WORK
alert(client.responseText.employees.email); //DOES NOT WORK
}
};

client.open("GET",url_action,true);
client.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
client.send();

和一个简单的表单

<form>
<input type="button" value="get me some json" onclick="getJson();">
</form>

当我点击该按钮时,我只收到 1 个显示
{employees:[{fullname:"Abhishek Raj Simon"},{email:"a@a.com"}]} 的提醒 我如何分别使用全名和电子邮件获取 Abhishek Raj Simona@a.com

阅读 Artem 的帖子后编辑

我的servlet

    Gson gson = new Gson( );
List<Employee> employees = new ArrayList<Employee>();
Employee emp=new Employee();
emp.setFullname("Abhishek Raj Simon");
emp.setEmail("a@a.com");
employees.add(emp);
response.setContentType( "application/json");
out.println( gson.toJson( employees));

js部分

var res=eval('(' + client.responseText + ')');
alert(res);
alert(res.employees.fullname);
alert(res.employees.email);

最佳答案

我认为您应该稍微更改从 servlet 发送的 JSON:{employees:[{fullname:"Abhishek Raj Simon", email:"a@a.com"}]}在这种情况下效果会更好一些。

我推荐 jQuery,正如 pap 所建议的那样。代码是:

$.getJSON('/temp/jsontest', function(data) {
var items = [];
for (employee in data.employees) {
items.push(employee.fullname + '<' + employee.email + '>');
}
alert('Employees: ' + items.join(', '));
});

在我看来,它比处理原始 XHR 更简单、更容易理解。 jQuery $.getJSON 将为您执行 GET,然后评估 JSON 响应,以便该函数以易于操作的数据的良好 JSON 表示形式呈现。

编辑:

经过有趣的讨论后,您可以引入一些更多的改进,以便用适当的基于 JQuery 的实现替换低级代码。

<script>
$(document).ready(function() {
$("#json-button").click(function() {
$.getJSON('/temp/jsontest', function(data) {
var items = [];
for (employee in data.employees) {
items.push(employee.fullname + '<' + employee.email + '>');
}
alert('Employees: ' + items.join(', '));
});
});
});
</script>

<form>
<input id="json-button" type="button" value="get me some json">
</form>

关于java - 如何从 servlet 获取 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6149811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com