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

Java反射:避免使用默认值的字段

戚甫
2023-03-14

我的班级结构如下:

public Class A{
private int a;
private String b;
private B binst;
}

public Class B{
private int x;
private String y;
}

所有的getter和setter都已定义。我使用Java反射进行如下调用:

method.invoke(ClassAObj, ClassBObj);

现在,在调用它之前,我只设置了y,而没有设置x。我将这个ClassAObj转换成JSON,发现0的默认值设置为x,它出现在JSON中。我不希望JSON中出现x字段。我该如何避免这种情况?

有趣的是,如果我设置了x而不是y,那么标签y不会出现在JSON中。

共有1个答案

聂溪叠
2023-03-14

因为int是一个基元,即:不可为空,并且通常Json解析器丢弃空值。您可以使用引用类型整数,其默认值为null

public Class B{
  private Integer x;
  private String y;
}
 类似资料:
  • 问题内容: 有什么方法可以使JAXB不保存其值是@Element批注中指定的默认值的字段,然后在从XML加载null或空值的元素时对其设置值?一个例子: 应生成: 而当加载 我正在尝试执行此操作,以生成干净的XML配置文件,并使其可读性更强且尺寸更小。 敬请谅解,谢谢。 问题答案: 您可以通过在get / set方法中使用逻辑并将逻辑放入其中来执行以下操作: 例 演示版 输出量 想要查询更多的信息

  • Lambda表达式是C++编程中的游戏规则改变者。这有点令人惊讶,因为它没有给语言带来新的表达能力。Lambda可以做的所有事情都可以通过其他方式完成。但是lambda是创建函数对象相当便捷的一种方法,对于日常的C++开发影响是巨大的。没有lambda时,标准库中的_if算法(比如,std::find_if, std::remove_if, std::count_if等)通常需要繁琐的谓词,但是当

  • 问题内容: 我正在调用一些JSON并将相关数据解析为CSV。我无法弄清楚如何使用默认密钥填充中间的JSON dict文件,因为其中很多是未填充的。当我尝试将内容解析为CSV时,结果为KeyError。 我现在收到(制造商)的“ NoneType”错误: 问题答案: 您可以使用而不是直接引用键。

  • 问题内容: 所以,应该是直截了当的问题。 可以说我有一堂课,其中包含很多字段,例如: 我怎样才能与反思,看是否领域,并已初始化或离开NULL,0和虚假的默认值吗? 问题答案: 您只有7种基本类型和一种引用类型要检查。如果将所有Number类型分组在一起,则只有四个要检查的值。

  • 如果我有一个默认模板类型的模板类,我必须编写模板尖括号。有没有可能避免这种情况? 示例: 到目前为止,我都是通过一个单独的名称空间和重新定义类来实现这一点的: 问题是,如果我想将类与其他类型一起使用,我必须检查名称空间detail_。有没有另一种解决方案,我还没有看到。

  • 问题内容: python的新手,新手开发人员,首次调用 我正在调用一些JSON并将相关数据解析为csv。我无法弄清楚如何使用默认键填充中间的json Dict文件,因为其中很多都没有填充。当我尝试将内容解析为csv时,结果是KeyError。希望有任何建议! 谢谢。 更新:谢谢大家!我现在收到(制造商)的“ NoneType”错误: 问题答案: 您可以使用而不是直接引用键。