Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javaservlet中发送自定义java类对象作为对ajax调用的响应,并在javascript中检索它?_Java_Ajax_Json_Class_Servlets - Fatal编程技术网

如何在Javaservlet中发送自定义java类对象作为对ajax调用的响应,并在javascript中检索它?

如何在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

我有一个java类,如下所示

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当然,几乎是一样的