从Spring Boot JSON Response中删除“ _embedded”和“ _links”

时间:2019-07-27 17:56:19

标签: java rest spring-boot

我使用CrudRepository与数据库进行交互,创建了具有Restful服务的基本Spring Boot应用程序。

JSON响应包含"_embedded" : { ... }"_links" : { ... },这些都是我不想要的。

{
  "_embedded" : {
    "countries" : [
      {
        "name" : "Antarctica",
        "_links" : {
          "self" : {
            "href" : "http://localhost:8080/world/rest/countries/ATA"
          },
          "country" : {
            "href" : "http://localhost:8080/world/rest/countries/ATA"
          }
        }
      },
      ...
    ]
  }

如何摆脱这种结构并以简单列表的形式返回对象? 是否可以设置一些属性或配置以将其从所有响应中删除?

我添加了属性spring.hateoas.use-hal-as-default-json-media-type=false,但没有用。

试图将结果手动转换为列表,countries.forEach(countriesList::add);;没有运气..

用于映射对象的POJO类

/* Package and Imports */

@Entity(name = "country")
public class Country {

    @Id
    private String code;

    private String name;
    private String continent;
    private String region;

    /* Getters, Setters and equals method below */
}

1 个答案:

答案 0 :(得分:0)

在StackOverflow和其他站点上讨论了许多主题之后。我得出的结论是,没有spring-boot-starter-data-rest会更好。

  1. 我从spring-boot-starter-data-rest中删除了pom.xml依赖项。
  2. 创建了一个@RestController来处理请求。
  3. 创建的用于处理不同请求类型(GET,POST等)的方法

@michalk的建议

Disable Hypertext Application Language (HAL) in JSON?

这确实有部分帮助,但不适用于数组。