Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.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
如何将这个由SpringMVC控制器方法构建的JSON封装到包装器中?_Json_Spring Mvc - Fatal编程技术网

如何将这个由SpringMVC控制器方法构建的JSON封装到包装器中?

如何将这个由SpringMVC控制器方法构建的JSON封装到包装器中?,json,spring-mvc,Json,Spring Mvc,我对SpringMVC非常陌生,这是我第一次制作JSON 因此,我有以下情况: 我有两个模型课: 1) 国家数据: public class CountryData { private String label; private String subdataConcat; private ArrayList<CountryDataChild> countryDataChildList; public CountryData(String lab

我对SpringMVC非常陌生,这是我第一次制作JSON

因此,我有以下情况:

我有两个模型课:

1) 国家数据

public class CountryData {

    private String label;
    private String subdataConcat;

    private ArrayList<CountryDataChild>  countryDataChildList;

    public CountryData(String label, String subdataConcat, ArrayList<CountryDataChild> countryDataChildList) {
        super();
        this.label = label;
        this.subdataConcat = subdataConcat;
        this.countryDataChildList = countryDataChildList;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public String getSubdataConcat() {
        return subdataConcat;
    }

    public void setSubdataConcat(String subdataConcat) {
        this.subdataConcat = subdataConcat;
    }

    public ArrayList<CountryDataChild> getCountryDataChildList() {
        return countryDataChildList;
    }

    public void setCountryDataChildList(ArrayList<CountryDataChild> countryDataChildList) {
        this.countryDataChildList = countryDataChildList;
    }

}
public class CountryDataChild {

    private String label;
    private String code;

    public CountryDataChild(String label, String code) {
        super();
        this.label = label;
        this.code = code;
    }

    public String getLabel() {
        return label;
    }

    public void setLabel(String label) {
        this.label = label;
    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

}
最后,在控制器类中,我有一个控制器方法,该方法生成一个JSON,其中包含CountryData信息:

@RequestMapping(value="/getCountryData", method = RequestMethod.GET)
public @ResponseBody CountryData getShopInJSON() {

    ArrayList<CountryDataChild> countryDataChildList = new ArrayList<CountryDataChild>();

    CountryDataChild child1 = new CountryDataChild("Lazio", "lazio");
    CountryDataChild child2 = new CountryDataChild("Lombardia", "lombardia");

    countryDataChildList.add(child1);
    countryDataChildList.add(child2);

    CountryData countryData = new CountryData("Italia", "y", countryDataChildList);

    return countryData;

}
好的,唯一的问题是,根据提供的规范,该对象必须:

 countrydata({"label":"Italia","subdataConcat":"y","countryDataChildList":[{"label":"Lazio","code":"lazio"},{"label":"Lombardia","code":"lombardia"}]})
因此,基本上生成的JSON必须包装在countrydata(…)


如何实现此规范?我遗漏了什么?

看起来您正在尝试生成JSONP,而不是普通的JSON。使用Spring MVC实现这一点的一种方法是保持
控制器的原样,然后创建一个过滤器,如下所述:

在这里,您可以将JSON包装到
countrydata
函数中,并将内容类型设置为
text/javascript

 countrydata({"label":"Italia","subdataConcat":"y","countryDataChildList":[{"label":"Lazio","code":"lazio"},{"label":"Lombardia","code":"lombardia"}]})