当前位置: 首页 > 面试题库 >

杰克逊的@ JsonView,@ JsonFilter和Spring

萧晓博
2023-03-14
问题内容

可以同时使用Spring 和的注释,使用Jackson @JsonView@JsonFilter注释来修改Spring MVC控制器返回的JSON
吗?MappingJacksonHttpMessageConverter``@ResponseBody``@RequestBody

public class Product
{
    private Integer id;
    private Set<ProductDescription> descriptions;
    private BigDecimal price;
    ...
}


public class ProductDescription
{
    private Integer id;
    private Language language;
    private String name;
    private String summary;
    private String lifeStory;
    ...
}

当客户端请求的集合时Products,我想返回每个的最小版本ProductDescription,也许只是它的ID。然后,在随后的调用中,客户端可以使用该ID来请求ProductDescription具有所有属性的完整实例。

能够在Spring MVC控制器方法上指定它是理想的,因为调用的方法定义了客户端请求数据的上下文。


问题答案:

这个问题解决了!
跟随这个

添加对Jackson序列化视图的支持

Spring
MVC现在支持Jackon的序列化视图,用于通过不同的控制器方法呈现同一POJO的不同子集(例如,详细页面与摘要视图)。问题:SPR-7156

这就是SPR-7156。

状态:已解决

描述

Jackson的JSONView批注允许开发人员控制对方法的哪些方面进行序列化。在当前实现中,必须使用Jackson视图编写器,但是内容类型不可用。如果作为RequestBody批注的一部分,可以指定JSONView会更好。

在 Spring ver> = 4.1上可用

更新

点击此链接。举例说明@JsonView批注。



 类似资料:
  • 我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A

  • 首先,我不熟悉Jython。我正在寻找一种将python代码集成到Java项目中的方法。因此我正在调查Jython。 我正在尝试将一个 json 字符串转换为 Java 对象 - 在 python 中。 首先,我一直在努力让Jython找到我的java类。由于缺乏更优雅的解决方案,我可以通过简单地执行以下操作来向前迈进: 无论如何。。。 我正在尝试以下操作: 但是,在运行时,我收到以下错误: 我不

  • 我想使用Spring的RestTemplate plus Jackson来使用Web服务。我已经学习了几本教程,并且已经达到了创建DAO的目的。这是我获取所有域对象的方法: 但我的Web服务不会立即返回Station对象数组,而是以这种方式返回一个更具语义的表达式: 所以我的问题是,我不知道如何“告诉”RestTemplate在“stations”指示符之后立即解析对象列表,而不创建临时对象,这似

  • 我正在尝试将jboss wildfly 8配置为将Jackson用于JSON。所以我补充说 我的耳朵工程。但在部署时,我会遇到以下错误: 原因:java。lang.LinkageError:加载程序约束冲突:解析重写的方法“org.jboss.resteasy.plugins.providers.jackson.ResteasyJacksonProvider$Proxy$\u$$WeldClien

  • 问题内容: 我的User对象的Jackson序列化遇到问题。有一些带有getter和setter的私有字段。当我做这样的事情时,一切工作正常: 但是我想用Spring Framework自动连接User对象: 这是行不通的。我有一个错误: 当我尝试忽略这些未知错误时 我得到了无限递归: 看起来Spring在自动装配MyUser实例上做错了什么,因此Jackson无法序列化它。 有办法解决吗? 更新

  • 问题内容: 在Jersey上使用Jackson 处理器时,何时以及为何需要在两者之间使用注释? 杰克逊(Jackson)还提供了自己的服务提供商以直接使用。这种方法缺少什么?还是为什么我比其他人更喜欢 ps:我也用弹簧 问题答案: 为了生成JSON,通常只需指定即可。但是,这将默认采用JAXB路由。 使用Object-> JAXB-> JSON,您必须注释要映射的类。这可以很好地工作,但是一旦您要