Jackson:从 json 中删除一些值并保留一些空值

2024-04-01

我有一个这样的模型:

public class Employee {
    @JsonProperty("emplyee_id")
    private Integer id;
    @JsonProperty("emplyee_first_name")
    private String firstName;
    @JsonProperty("emplyee_last_name")
    private String lastName;
    @JsonProperty("emplyee_address")
    private String address;
    @JsonProperty("emplyee_age")
    private Byte age;
    @JsonProperty("emplyee_level")
    private Byte level;

    //getters and setters
}

现在我需要使用这个(唯一的)模型创建两个 JSON。

第一个必须像这样,例如:

{
    "employee_id":101,
    "employee_first_name":"Alex",
    "employee_last_name":"Light",
    "employee_age":null,
    "employee_address":null
}

第二个必须像这样,例如:

{
    "employee_id":101,
    "employee_level":5
}

顺便说一句,我已经测试过了@JsonIgnore and @JsonInclude(JsonInclude.Include.NON_NULL).

第一个的问题(据我所知)是,这些字段不能包含在其他 JSON 中(例如,如果level获取此注释,它不会包含在第二个 JSON 中)

第二个问题的问题是,null值不能包含在 JSON 中。

那么我可以保留 null 值并防止某些其他属性包含在 JSON 中,而无需创建额外的模型吗?如果答案是肯定的,那么我该怎么做呢?如果不是,我真的很感激如果有人为我提供针对这种状态的最佳解决方案。

非常感谢。


使用 @JsonView 注释可能对您有用

public class Views {
    public static class Public {
    }
    public static class Base {
    }
 }



public class Employee {
   @JsonProperty("emplyee_id")
   @JsonView({View.Public.class,View.Base.class})
   private Integer id;

   @JsonProperty("emplyee_first_name")
   @JsonView(View.Public.class)
   private String firstName;

   @JsonProperty("emplyee_last_name")
   @JsonView(View.Public.class)
   private String lastName;

   @JsonProperty("emplyee_address")
   private String address;

   @JsonProperty("emplyee_age")
   private Byte age;

   @JsonProperty("emplyee_level")
   @JsonView(View.Base.class)
   private Byte level;

   //getters and setters
 }

在您的 json 响应中添加 @JsonView(Public/Base.class) 它将根据 jsonview 注释返回

//requestmapping
@JsonView(View.Public.class)  
public ResponseEntity<Employee> getEmployeeWithPublicView(){
    //do something
}

回复:

{ 
  "employee_id":101,
  "employee_first_name":"Alex",
  "employee_last_name":"Light",
  "employee_age":null,
  "employee_address":null
}

对于第二个

//requestmapping
@JsonView(View.Base.class)  
public ResponseEntity<Employee> getEmployeeWithBaseView(){
    //do something
}

response

{
   "employee_id":101,
   "employee_level":5
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jackson:从 json 中删除一些值并保留一些空值 的相关文章

  • java 中的梵文 i18n

    我正在尝试使用来自互联网的示例 ttf 文件在 java 中使用 i18n 进行梵文 印地文 我可以加载资源包条目 还可以加载 ttf 并设置字体 但它不会根据需要呈现 jlabel 它显示块代替字符 如果我在 Eclipse 中调试 我可
  • JAXB 继承冲突 - 重新注释子类

    目前我的项目中有这样的环境 public abstract class Foo private List
  • Selenium 和 TestNG 同时使用“dependsOn”和“priority =”问题

    我正在努力在 GUI 自动化测试中实现更好的工作流程控制 我首先从dependsOn开始 但很快发现缺点是如果一个测试失败 则套件的整个其余部分都不会运行 所以我改用 priority 但看到了意外的行为 一个例子 Test priorit
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • 参考上一个问题:为什么 VBA 没有加载所有发票详细信息

    除了上一个问题之外 我们在销售发票上仍然存在相同的加载失败问题 下面的 VBA Json 仍然仅加载一行或第一个产品详细信息行 而不是与表中该销售发票合作的所有产品行详细信息 我们希望下面的 VBA 能够根据参数加载发票详细信息 例如 如果
  • 未注入带有 JPA2 的 Apache Ignite 2.7 IgniteRepository

    使用在 Web 上建立的 guildes 我使用 Spring Data JPA 2 应用程序制作了简单的 Spring Boot 2 仅在 2 7 版本中才向 Apache Ignite 添加了 Spring Boot JPA 2 支持
  • Maven WebApp META-INF context.xml

    我正在使用 Maven 3 并且尝试在 webapp 文件夹下添加 META INF 文件夹 所以我正在尝试执行以下操作 src main webapp META INF context xml WEB INF 下面是我的 POM 文件
  • FileObserver 不适用于 Android 6.0 Marshmallow (API 23) 中的外部存储

    我有一个应用程序可以观察外部存储上的公共目录FileObserver 它运行良好Lollipop设备 我想添加对Marshmallow 所以我用它设置了一台 Nexus 9 平板电脑 在 Marshmallow 设备上 它失败 在 Loll
  • 绘制平滑曲线

    我想创建更平滑的曲线 而不仅仅是线角 这是我现在画的图 这是我的代码 case FREEHAND float pts float ptk ptk new float 2 imageMatrix invert inv if mCurrentS
  • 在拇指上方显示修改后的 JSlider 值

    有没有一种简单的方法可以在使用某些 外观和感觉 的同时更改 JSlider 上方标签中显示的值 为了清楚起见 我正在谈论这个值 具体来说 我想显示除以 1000 的值而不是值本身 我知道如果我显示它们 我可以为刻度设置标签 但用户将不得不猜
  • 如何自动转换十六进制代码以将其用作 Java 中的 byte[]?

    我这里有很多十六进制代码 我想将它们放入 Java 中 而不需要向每个实体附加 0x 喜欢 0102FFAB 和我必须执行以下操作 byte test 0x01 0x02 0xFF 0xAB 我有很多很长的十六进制代码 有什么办法可以自动做
  • Java 中如何验证字符串的格式是否正确

    我目前正在用 Java 编写一个验证方法来检查字符串是否是要更改为日期的几种不同格式之一 我希望它接受的格式如下 MM DD YY M DD YY MM D YY 和 M D YY 我正在测试第一种格式 每次它都告诉我它无效 即使我输入了有
  • 如何在 Eclipse 中获得完全限定的类名?

    有没有一种快速方法可以在 Eclipse 中单击 Java 类并获取其完全限定名称 或将其复制到剪贴板 2016年6月29日编辑 正如 Jeff 所指出的 您只需要执行以下第二步 1 Double click on the class na
  • jDBI中如何进行内查询?

    我怎样才能在 jDBI 中执行这样的事情 SqlQuery select id from foo where name in
  • Java HashSet 是线程安全的只读吗?

    如果我通过 Collections unmodifyingSet 运行 HashSet 实例后 它是线程安全的吗 我问这个是因为 Set 文档声明它不是 但我只是执行读取操作 来自 Javadoc 请注意 此实现不是同步的 如果多个线程同时
  • 检查按钮是否可用?如果没有,请等待 5 秒钟,然后再次检查?

    基本上我想看看此刻是否可以单击按钮 如果没有我想再试一次 所以我需要某种 goto 函数来返回到代码的前一行 尽管我怀疑我写得非常糟糕 但它本来可以做得更容易 try driver findElement By xpath button i
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • java Web应用程序中的日期转换

    String date1 13 03 2014 16 56 46 AEDT SimpleDateFormat sdf new SimpleDateFormat dd MM yyyy HH mm ss z sdf setTimeZone Ti
  • mysql_query 保留返回时在表中创建的数据类型?

    我在mysql中有一个表 CREATE TABLE user id INT name VARCHAR 250 我查询表 result mysql query SELECT id name FROM user 我收集结果 while row
  • 如何使用socket.io发送图像文件(二进制数据)?

    我无法从以下位置发送数据Android Client to NodeJS Server I use Socket IO 客户端 https github com socketio socket io client java我的客户端中的ja

随机推荐

  • 无法在 VSCode 中调试 Typescript

    这是我的 launch json version 0 2 0 configurations type node name Launch Server request launch program workspaceRoot server s
  • Spring Boot + Gradle - 在哪里放置环境配置?

    我正在 Spring Boot 中开发一个简单的应用程序 它是在本地开发的 并且可以工作 Gradle H2 数据库的连接属性设置为application properties放置在项目的根目录下 Maven 文件夹结构 src main
  • 更改导航栏颜色

    我知道从 API 21 开始可以更改导航栏的颜色 我查看了 React Native 的文档 但找不到方法来做到这一点 我知道的唯一方法是创建一个本机模块 但这似乎不是一个好的解决方案 因为我正在使用 Expo 有内置的方法可以做到这一点吗
  • BizTalk 平面文件架构 - 如何接受 LF 或 CRLF 作为行分隔符

    我们的客户向我们发送一个平面文件作为输入 然后我们将其转换为 XML 文件 然后发送到目标系统 平面文件由多行组成 每行由 LF 或 CRLF 分隔 如何创建平面文件架构 以便 BizTalk 可以解释每一行数据 无论该行是由 LF 0x0
  • ADODB 记录集列标题

    我正在复制ADODB Recordset数据到 Excel 文件 但它将记录集数据复制到 Excel 没有列标题 我使用的是 MS Access 2013 CompyFromRecordset命令 我的问题是 有没有办法复制RecordSe
  • 可视化二分图

    有人可以推荐一个库或代码来可视化 C 中的二分图吗 Graph 似乎不直接支持这种图 但有 一些支持解开顶点 我想创建一些像这样的图形二部图 http upload wikimedia org wikipedia commons e e8
  • 如何使用 spl_autoload() 代替 __autoload()

    根据http php net manual en language oop5 autoload php http php net manual en language oop5 autoload php神奇的功能 autoload 自 PH
  • @singleton 的行为类似于@stateless bean

    我正在开发一个应用程序 java中的企业应用程序 其中我需要由多个线程同时共享的单个实例 我使用了 singleton 当每个用户登录时 通过调用 setTeleCallersDetails 远程方法在电话呼叫者列表中设置一个值 但在某些时
  • 如何从 Hive 中的 json 字符串中提取选定的值

    我在 Hive 中运行一个简单的查询 生成以下输出 以及一些其他附加列 col1 col2 A variable1 123 variable2 456 variable3 789
  • Marshal.GetFunctionPointerForDelegate 如何作用于实例成员?

    我想知道 Marshal GetFunctionPointerForDelegate 即我想知道它如何将委托转换为非静态函数到函数指针 它是否动态生成以某种方式附加实例的代码存根 如果是这样 这不会泄漏内存吗 也许委托在其终结器中释放了它
  • 如何在覆盖控制器后在 activeadmin 表单中显示错误

    我遇到一种情况 我需要覆盖 activeadmin 中的创建 我自动填充字段 如果数据已经存在 则应该更新 否则创建 这是我的创建方法 def create id params company dig id if id present co
  • C# 是否有一种简单的方法可以让我替换多个 if 语句?

    我有以下代码 if testQuestion Result t testQuestion CorrectCount if testQuestion Result f testQuestion IncorrectCount if testQu
  • 结构图 - 同一接口的两个实现

    我有一个具有以下 ctor 的服务类 public class IMessageService emailService IMessageService smsService 和两个实现IMessageService 电子邮件和短信 如何配
  • 如何在 ASP.NET Core RC2 中制作 websocket 服务器?

    我使用 Microsoft AspNetCore WebSockets Server 0 1 0 rc2 final 制作 websocket 服务器 但不起作用 在rc1中 它是1 0 0 rc1 final 并且工作正常 这是我的代码
  • 如何标记一个TPL数据流周期完成?

    给定 TPL 数据流中的以下设置 var directory new DirectoryInfo C dev kortforsyningen dsm tiles var dirBroadcast new BroadcastBlock
  • 如何在 Vista 文件打开对话框中禁用通配符模式的自动附加

    我使用文件打开对话框来选择图像文件以进行进一步编辑 过滤器列表包含一个 所有支持的格式 条目 它代表一长串文件格式 由于 Vista 会自动在筛选器组合框中附加通配符模式 因此展开的组合框太宽 无法完全适应屏幕 除此之外 它看起来不太好 那
  • Android模拟器的字体可以修改吗?

    我需要更改 Android 模拟器上安装的字体 例如 我想安装 TrueType 字体 它涵盖了其他一些语言环境 如阿拉伯语 中文等 我只是想知道这可能吗 你应该覆盖 system fonts DroidSansFallback ttf使用
  • 将内容加载到 iframe 中避免内存泄漏

    我正在开发一个在 iframe 中呈现内容的嵌入式系统 它使用signalR 基于ajax 和jquery 随着时间的流逝 浏览器变得越来越慢 内存使用量也越来越高 所以我希望消除所有潜在的内存问题 当新页面加载到 iframe 中时 我附
  • 可以嵌套 C 预处理器指令吗?

    例如 以下情况是可能的 define definer x define x 不 你不能那样做 英镑 符号在定义中具有不同的含义 这意味着 如果这是一个参数 则通过引用它使其成为一个字符串
  • Jackson:从 json 中删除一些值并保留一些空值

    我有一个这样的模型 public class Employee JsonProperty emplyee id private Integer id JsonProperty emplyee first name private Strin