当前位置: 首页 > 知识库问答 >
问题:

Spring Rest:更改JSON响应模板

白昊东
2023-03-14

相当新的Spring开发者..

过去几天我一直在使用Spring,并设法使用JPA和Spring Rest创建了一个简单的CRUD API。现在,我希望能够灵活地改变返回的JSON的组成方式。

例如,我有以下简单实体:

Table Name: Category

 - category_id
 - category_name

GET请求返回以下JSON:

{
    categoryName: "Category 1",
    _links: {
        self: {
            href: "http://localhost:8080/faqsCategories/1"
        },
        faqsCategory: {
            href: "http://localhost:8080/faqsCategories/1"
        },
        faqsContent: {
            href: "http://localhost:8080/faqsCategories/1/faqsContent"
        }
    }
}

现在我想删除_links部分并添加其他内容。

这在Spring可能吗?

课程:

FaqsCategory(实体)

@Entity
@Table(name = "faqs_category")
public class FaqsCategory {

  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Long categoryId;

  private String categoryName;

  @OneToMany(targetEntity = FaqsContent.class, mappedBy = "faqsCategory")
  private Set<FaqsContent> faqsContent = new HashSet<>();

  protected FaqsCategory() {
  }
  .....
}

FaqsCategoryRepository

@RepositoryRestResource
public interface FaqsCategoryRepository extends JpaRepository<FaqsCategory, Long> {

}

共有1个答案

松铭
2023-03-14

解决方案是使用@JsonProperty(“...”),在您的情况下,它应该看起来像

@JsonProperty("links")
@OneToMany(targetEntity = FaqsContent.class, mappedBy = "faqsCategory")
private Set<FaqsContent> faqsContent = new HashSet<>();

“links”将是json响应中出现的名称,而不是“_links”

 类似资料:
  • 我有一个基于Spring Security OAuth2的REST应用程序。我一直试图将默认的Spring Security消息传递格式从XML更改为JSON,并取得了部分成功。 对于eg--我知道了当请求不包含承载令牌时如何更改响应格式(下面一行就是这样做的) 如何更改BadCredentialsException JSON格式?当前,它返回一个类似于上面的JSON? 下面是我的applicat

  • 我有下面的servlet过滤器。

  • 我有一个REST控制器,它可以返回如下产品列表: 电流输出 为了让我们的JS网格库能够正常工作,我需要修改响应,使其看起来像: 期望输出 控制器 有没有一种简单的方法可以使用本地Spring库修改JSON响应?

  • 如何在响应模式下动态更改图像链接。我正在wordpress上工作,显示固定大小为280*200的缩略图,但分辨率在480px到600px之间,我想将缩略图大小更改为中等大小(我已设置为480*200),我如何实现这一点?是否有脚本可以检测设备分辨率并自动将img src更改为中等大小的缩略图???这样地 (桌面版) (移动版)

  • 我有一个用Java编写的Spring Boot应用程序,它是一个REST API。该服务(Svc A)调用REST API服务(Svc B),该服务也是用Java编写的Spring Boot应用程序。当没有找到数据时,Svc B返回404状态码。我需要将此响应更改为200状态代码,并返回一个空响应对象。我不确定是否或如何做到这一点。 我可以捕捉错误,并确定404是否是这个没有数据发现的错误。但是,