gpt4 book ai didi

java - JSON 输出不遵循模型中的 JAXB 注释

转载 作者:行者123 更新时间:2023-12-02 05:44:39 24 4
gpt4 key购买 nike

我有一个 Spring MVC Web 应用程序,它使用 Hibernate 进行数据库持久性。我希望使用现有模型能够从 Controller 输出 XML 或 JSON。

我使用 JAXB 注释配置了所需的数据库模型,并且仅希望在输出中返回特定参数(数据库模型示例):

@XmlRootElement
@XmlAccessorType(XmlAccessType.NONE)
public class BaseModel {
@XmlAttribute
String pageTitle;
@XmlTransient
String pageDescription;

输出 XML 的相应 Controller 就是

@RequestMapping(value = "/basemodel/raw/xml/{id}", method = RequestMethod.GET, produces = "application/xml")
public @ResponseBody BaseModel getBaseModel(@PathVariable("id") int id){
return service.findBaseModel(id);
}

这将为我提供所需的 XML 输出,仅将 pageTitle 作为属性输出,而 pageDescription 被忽略。

现在,如果我稍微调整我的 Controller 来生成 JSON

@RequestMapping(value = "/basemodel/raw/json/{id}", method = RequestMethod.GET, produces = "application/json")
public @ResponseBody BaseModel getBaseModel2(@PathVariable("id") int id){
return service.findBaseModel(id);
}

相应的 json 输出将返回 pageTitle 和 pageDescription 作为属性(我不想要)。

我知道有一些库可以满足我想要完成的任务,但我似乎无法很好地掌握哪个库是理想的,而且还找到了一个教程来配置我的应用程序以使用这些库。有人可以指导我正确的方向吗?谢谢。

最佳答案

如果您呈现 JSON,则将考虑 JAXB 注释,因为 JAXB 用于绑定(bind)和呈现 XML(正如项目名称和注释实际上所暗示的那样)。

如果您想自定义 JSON 输出,您有两个选择:

  1. 使用 Jackson 注释 (@Json...)。 pageDescription 字段上的 @JsonIgnore 应该可以解决问题。
  2. 包括 Jackson JAXB integration module添加到您的项目并配置 Jackson ObjectMapper 以包含它(如项目网站上所述)。

我推荐前者,因为它是更简单的方法,并且您可以更好地控制 JSON 渲染。

关于java - JSON 输出不遵循模型中的 JAXB 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24204177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com