0
@RequestMapping(value = "/dropDown", method = RequestMethod.GET)
public @ResponseBody
DropDown getList(Map<String, Object> map, HttpServletRequest request,
        HttpServletResponse response) {
    DropDown dropDown = new DropDown();
    List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
    List<MapTable2> list = contactService.mapProcess();
    for (MapTable2 table : list) {
        Map<String, Object> dataRow = new HashMap<String, Object>(1);
        dataRow.put("text", table.getProcess());
        dataRow.put("value", table.getId());
        dataRow.put("selected", false);
        dataRow.put("description", table.getProcess());
        dataRow.put("imageSrc", "image.jpg");
        rows.add(dataRow);
    }
    dropDown.setRows(rows);
    return dropDown;
}

我需要创建以下一个

var ddData = [
{
    text: "Facebook",
    value: 1,
    selected: false,
    description: "Description with Facebook",
    imageSrc: "http://dl.dropbox.com/u/40036711/Images/facebook-icon-32.png"
},
{
    text: "Twitter",
    value: 2,
    selected: false,
    description: "Description with Twitter",
    imageSrc: "http://dl.dropbox.com/u/40036711/Images/twitter-icon-32.png"
}]

我知道我上面的 java 编码的问题,我不知道要像上面那样创建 json 数组。请检查并帮助我纠正它。

MapTable2 有 ProcessId & ProcessName

public class MapTable2 {
private int id;
private String process;
public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getProcess() {
    return process;
}
public void setProcess(String process) {
    this.process = process;
}

}

4

2 回答 2

3

@theon 是对的。

由于您正在使用@Responsebody,您可以让 Spring 为您进行 JSON 转换。创建一个与 JSON 数组中的对象匹配的类:

public class SomeObject {
    public String getText() { //... }
    public int getValue() { //... }
    public boolean getSelected { // ... }
    public String getDescription { // ... }
    public String getImageSrc { // ... }
}

填充对象并将其作为列表从控制器返回:

@RequestMapping(value = "/dropDown", method = RequestMethod.GET)
@ResponseBody
public List<SomeObject> getList(Map<String, Object> map, HttpServletRequest request, HttpServletResponse response) {
     // Get the objects, return them in a list
}

除非您还没有这样做,否则将<mvc:annotation-driven />添加到您的应用程序配置中。@EnableWebMvc确保 Jackson 在您的类路径中可用,然后 Spring 会自动将您的对象序列化为 JSON(如果请求具有Content-Type: application/json. 或者,可以将producer属性添加到@RequestMapping注释中以始终返回 JSON)。

于 2012-11-24T21:39:12.140 回答
1

那么使用这个。它的重量非常轻(16KB),完全可以满足您的需求。因此,在您的情况下,您将使用JSONObjectwhich 在内部扩展HashMap 并执行

JSONObject o = new JSONObject();
o.put("text","whatever text");
o.put("value",1);
o.put("selected",false);
//and so on
JSONArray arr = new JSONArray();
arr.add(o);

以上将为您提供:

[
{
text: "Facebook",
value: 1,
selected: false,
description: "Description with Facebook",
imageSrc: "http://dl.dropbox.com/u/40036711/Images/facebook-icon-32.png"
}
]

要添加更多对象,JSONObjects请在循环中添加更多对象JSONArray

因此,根据您给定的代码,只需替换为dataRow“JSONObject”即可。最后,要检索字符串,请执行.rowsJSONArrayrows.toString()

于 2012-11-24T18:14:32.607 回答