2016-07-04 46 views
1

如何获取包含java对象的json,但使用键作为数组的标识符? 我在Spring mvc 4.x中有以下内容。我使用杰克逊库来将对象编组为json。Spring Web MVC JSON - 杰克逊键/对象数组的名称(命名数组)

@RequestMapping(value="dogs") 
    public List<Dog> getDogs(){ 
     List<Dog> list_dogs = new ArrayList<Dog>(); 
     list_dogs.add(new Dog("dog1",1)); 
     list_dogs.add(new Dog("dog2",2)); 
     return list_dogs; 
    } 

我得到如下回应:[{"name":"dog1","age":1},{"name":"dog2","age":2}]

我想有它类似如下:

{ 
    "array": [{ 
     "name": "dog1", 
     "age": 1 
    }, { 
     "name": "dog2", 
     "age": 2 
    }] 
} 

如何提供对数组的名字吗?

回答

1

好的,使用一个地图,而不是一个列表。

@RequestMapping(value="dogs") 
public Map<String, List<Dog>> getDogs(){ 
    Map<String, List<Dog>> map = new HashMap<String, List<Dog>>(); 
    List<Dog> list_dogs = new ArrayList<Dog>(); 
    list_dogs.add(new Dog("dog1",1)); 
    list_dogs.add(new Dog("dog2",2)); 
    map.put("myArray", list_dogs); 
    //return list_dogs; [{"name":"dog1","age":1},{"name":"dog2","age":2}] 
    return map;  //{"myArray":[{"name":"dog1","age":1},{"name":"dog2","age":2}]} 
} 

{"myArray":[{"name":"dog1","age":1},{"name":"dog2","age":2}]} 
0

您期待的响应是json对象而不是json数组。 因此,使用所需的密钥创建json对象/地图

@RequestMapping(value="dogs") 
public Map<String, List<Dog>> getDogs(){ 
    List<Dog> list_dogs = new ArrayList<Dog>(); 
    list_dogs.add(new Dog("dog1",1)); 
    list_dogs.add(new Dog("dog2",2)); 
    Map<String, List<Dog>> map = new HashMap<>(); 
    map.put("array", list_dogs); 
    return map; 
}