Если вам просто нужен массив объектов, вам не следует выбирать карту, а используйте тип List
. Например, если у вас есть объекты приветствия и вы хотите вернуть список всех приветствий, ваш GetMapping
будет выглядеть примерно так:
@GetMapping("/greetings")
public ResponseEntity<List<Map<String,String>>> getGreeting() {
ArrayList<Object> al = new ArrayList<Object>();
HashMap<String, String> map1 = new HashMap<String, String>();
map1.put("en", "Greetings!");
al.add(map1);
HashMap<String, String> map2 = new HashMap<>();
map2.put("hi", "Namaste!");
al.add(map2);
return ResponseEntity.ok(al);
}
Использование ResponseEntity
гарантирует, что вы возвращаете правильный код состояния ипоскольку он оборачивает ваш ответ, его удобнее обслуживать.
Редактировать: Для пар ключ-значение, которые вы создали с помощью карты, вы можете использовать POJO.
class Greeting{
private String greetingLangCode;
private String greetingText;
// getters and setters
@JsonValue
public String info(){
return this.greetingLangCode + ":" + "greetingText";
}
}
Сэта конечная точка изменится на
@GetMapping("/greetings")
public ResponseEntity<List<Greeting>> getGreeting() {
List<Greeting> al = new ArrayList<>();
al.add(new Greeting("en", "Greetings!"));
al.add(new Greeting("hi", "Namaste!"));
return ResponseEntity.ok(al);
}
Но в случае, если описанное выше не работает, вам потребуется специальный сериализатор для сериализации, такой как пара key:value
карты.
Возможно this пост полезен. В этом посте есть полный пример того, как писать пользовательские serializer
и deserializer
.