在JSON请求中发送列表

时间:2013-02-26 21:00:46

标签: java json spring spring-mvc

我在JSON中向Spring MVC Controller发送了几个'fields'和'lists',如下所示:

    var data = {
        'message' : 'Text data',
        '**listOfIds**' : '350234983, 378350950',

        'synchronizerToken' : formTokenId

};

$.ajax({
        url : 'testURL.do',
        type : 'post',
        data : data,
        cache : false,
        dataType : 'json',

        success : function (jsonResponse) {},

        error : function (error) {}
});

在Spring MVC控制器中,URL处理程序如下所示:

    @RequestMapping(value = "/testURL.do", method = RequestMethod.POST)
public ModelAndView executeTest( ListData listData) {
        ModelAndView    modelAndView    = null;
        JsonResponse    jsonResponse    = null;

        modelAndView    = executeTransaction(listData);
        } 

        return modelAndView;
    }


ListData.java

public class ListData{
    private String          message;
    private List<String>    **listOfIds** = new ArrayList<String>();   

//getter/setters

问题是 listOfIds 未作为列表返回。 它以单字符串'350234983,378350950'

返回

有人可以建议这里有什么问题,或者有没有更好的方法来接收JSON响应中的列表?

谢谢, -Fonda

2 个答案:

答案 0 :(得分:5)

使listOfIds成为一个字符串数组而不是一个字符串。

'listOfIds' : ['350234983', '378350950'],

答案 1 :(得分:0)

1)

Add gson jar 

import com.google.gson.Gson;//import

Gson gson = new Gson();//create instance

gson.toJson(ListData);//convert it to json

2。)

从控制器定义下面的bean返回jsonView。

<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"/>

控制器

import org.springframework.ui.ModelMap;

@RequestMapping(value = "/testURL.do", method = RequestMethod.POST)
public String executeTest(ModelMap model, ListData listData) {
    ModelAndView    modelAndView    = null;
    JsonResponse    jsonResponse    = null;
    modelAndView    = executeTransaction(listData);
    model.addAttribute("paramName", modelAndView);
    } 

    return "jsonView";
}

改变ajax

$.ajax({
    url : 'testURL.do',
    type : 'post',
    data : data,
    cache : false,
    dataType : 'json',

    success : function (jsonResponse) {
       var jsonValue = $.parseJSON(jsonResponse.paramName);
    },

    error : function (error) {}
});

在mvc-servlet.xml中的viewsResolver配置

<bean class="org.springframework.web.servlet.view.XmlViewResolver">
   <property name="location">
       <value>/path/views.xml</value>
   </property>
</bean>