Как правильно отправить массив JSON с Spring API? - PullRequest
0 голосов
/ 10 июня 2019

Итак, я работаю над созданием веб-сайта lil, который должен демонстрировать насекомых и некоторую информацию о них, и я получил вызов fetch, и сам сайт запущен и работает, без проблем.На сервере у меня есть API с Spring Boot, который извлекает мой InsectObject, который на данный момент просто содержит строку title и description и работает нормально.

Теперь, извините меня, когда я пытаюсь объяснить проблему в меру своих способностей.

Моя проблема в том, что я получаю ответ от своего API следующим образом:

[
    {
        "id": 1,
        "title": "mantis",
        "description": "leafy boi"
    },
    {
        "id": 2,
        "title": "moth",
        "description": "fly boi"
    }
]

Где я хочу, чтобы он возвращал его как:

{
bugs: [
    {
        "id": 1,
        "title": "mantis",
        "description": "leafy boi"
    },
    {
        "id": 2,
        "title": "moth",
        "description": "fly boi"
    }
  ]
}

Вот как Я думаю, должен выглядеть правильный вызов API.Но опять же, я впервые захожу на эту территорию, и я только следовал учебным пособиям и документации, создавая свою собственную картину на этом пути.

Если это имеет какое-либо отношение, мой контроллер покоя выглядит так:

@RestController
public class BugSiteController {

    private final InsectRepository repository;

    BugSiteController(InsectRepository repository) {
        this.repository = repository;
    }

    // get all bugs from the repo
    @CrossOrigin(origins = "http://localhost:3000")
    @GetMapping("/bugs")
    List<InsectObject> getAll() { 

        return repository.findAll();
    }
}

Чего мне не хватает?Что-то в моем методе getAll () я должен изменить, чтобы получить желаемый результат?или я должен быть в состоянии работать с первым результатом независимо?Должен ли я вернуть что-то кроме List <>?Я пытался с ResponseEntity, но у меня был точно такой же результат, только более многословный.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 10 июня 2019

Вы можете установить значение в модели или установить его на карте.

Модель

class InsectResponse {

  @JsonProperty("bug")
  private List<InsectObject> insectObject;
  // Getter, Setter & Constructor
}

Контроллер

@GetMapping("/bugs")
public ReponseEntity getAll() { 
   return ResponseEntity.ok(new InsectResponse(repository.findAll()));
}

или

@GetMapping("/bugs")
public ReponseEntity getAll() { 
   return ResponseEntity.ok(new HashMap<String, List<InsectObject>>() {{
            put("bug", repository.findAll());
        }});
}
1 голос
/ 10 июня 2019

Для класса сущности InsectObject добавьте:

@JsonRootName(value = "bug")
...