如何在Javaservlet中发送自定义java类对象作为对ajax调用的响应,并在javascript中检索它?
我有一个java类,如下所示如何在Javaservlet中发送自定义java类对象作为对ajax调用的响应,并在javascript中检索它?,java,ajax,json,class,servlets,Java,Ajax,Json,Class,Servlets,我有一个java类,如下所示 Class GrosBean{ private Map<Integer,String> ItemList; private ArrayList<String> selectItemList; public Map<Integer, String> getItemList() { return ItemList; } public void setItemList(Map&l
Class GrosBean{
private Map<Integer,String> ItemList;
private ArrayList<String> selectItemList;
public Map<Integer, String> getItemList() {
return ItemList;
}
public void setItemList(Map<Integer, String> ItemList) {
this.ItemList = ItemList;
}
public ArrayList<String> getSelectItemList() {
return selectItemList;
}
public void setSelectItemList(ArrayList<String> selectItemList) {
this.selectItemList = selectItemList;
}
}
classgrosbean{
私有地图项目列表;
私有ArrayList selectItemList;
公共映射getItemList(){
返回项目列表;
}
公共void setItemList(映射项列表){
this.ItemList=ItemList;
}
公共阵列列表getSelectItemList(){
返回selectItemList;
}
public void setSelectItemList(ArrayList selectItemList){
this.selectItemList=selectItemList;
}
}
我使用ajax调用了一个servlet,这个servlet从数据库中获取数据并将其放入上述类的对象中。最后,我在上面的GrosBean对象中填充了数据
我想将此数据发送回调用页面javascript代码
我想用javascript检索这个对象,并用这个对象中的值构造复选框列表
如何使用json将java类对象作为ajax响应发送,并在javascript中迭代其列表和映射属性
朋友们,请引导我走这条路
提前谢谢你 可以使用映射器将java对象序列化为json字符串
public String toJson(GrosBean bean) {
ObjectMapper mapper = new ObjectMapper();
return mapper.writeValueAsString(bean);
}
或者,使用以下代码也可以实现同样的效果
public String toJson(GrosBean bean) {
Gson gson = new Gson();
return gson.toJson(bean);
}
然后在javascript端,您可以像这样读取json:
var bean = eval(json);
bean.selectItemList.each(function(item) {
// do something with the item
});
var itemList = bean.ItemList;
for (var key in itemList) {
if (itemList.hasOwnProperty(key)) {
var value = itemList[key];
// do something with key/value
}
}
例如,我会使用一个库来序列化Java->JSON,尽管还有其他库可以替代。@andyb感谢firend的回复。我也使用了相同的库,但在发送一个自定义类对象(其中包含Map和Arraylist变量)作为ajax响应并将其检索回来时,我不知道或者可能会感到困惑。我需要这方面的指导。我已经发送了一个普通类对象的普通Arraylist作为ajax响应,但没有一个包含Arraylist对象和Map对象的类对象。
Arraylist
实现了toString
,JSON库将尝试通过迭代序列化Map
内容,检查键和值类型并尝试对其调用toString
。这个过程通过所有类字段进行递归,最终生成JSON对象。因此,只要每个字段都可以序列化,整个对象就应该序列化为JSON。感谢朋友的回复。jackson mapper很酷。但我在我的项目中到处都使用谷歌图书馆,所以我想在整个项目中只使用这个图书馆。你能用谷歌gson库给我同样的解释吗?1当然,几乎是一样的