【问题标题】:Spring Web MVC Json - jackson key/name for array of objects (named array)Spring Web MVC Json - 对象数组的杰克逊键/名称(命名数组)
【发布时间】:2016-07-04 14:17:26
【问题描述】:

我如何获得一个包含 java 对象的 json,但用一个键作为数组的标识符? 我在 Spring mvc 4.x 中有以下内容。我使用 Jackson 库将对象编组为 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
    }]
}

如何提供数组的名称?

【问题讨论】:

    标签: json spring-mvc jackson


    【解决方案1】:

    好的,使用 Map 而不是 List。

    @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}]}
    

    【讨论】:

      【解决方案2】:

      您期望的响应是 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;   
      }
      

      【讨论】:

        猜你喜欢
        • 2013-05-11
        • 1970-01-01
        • 2011-11-24
        • 1970-01-01
        • 1970-01-01
        • 2016-05-10
        • 2017-10-03
        • 2017-10-05
        • 1970-01-01
        相关资源
        最近更新 更多