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

Jackson-序列化布尔值为1/0而不是true/false

简宏义
2023-03-14

我有接收JSON对象的REST资源,该JSON对象是从用户ID到某个布尔值的映射,该布尔值指示该用户是否有错误。

由于我希望有大量的用户,所以我希望通过使用1/0而不是true/false来缩小这个JSON的大小。

我尝试了一下,发现在淡化过程中,Jackson会成功地将1/0转换成true/false,但是有没有办法告诉Jackson(也许使用注释?)将此布尔字段序列化为1/0而不是true/false?

共有1个答案

邓嘉致
2023-03-14

这里有一个JacksonJSONSerializer,它将Boolean序列化为10

public class NumericBooleanSerializer extends JsonSerializer<Boolean> {
    @Override
    public void serialize(Boolean b, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException {
        jsonGenerator.writeNumber(b ? 1 : 0);
    }
}

然后对布尔字段进行注释,如下所示:

@JsonSerialize(using = NumericBooleanSerializer.class)
private boolean fieldName;

或者在Jackson模块中注册:

module.addSerializer(new NumericBooleanSerializer());
 类似资料:
  • 问题内容: 是否有任何理由为什么Java的布尔只需要或者为什么不和也? 问题答案: Java与C和C ++之类的语言不同,Java将其视为完全独立的数据类型,它具有两个不同的值:true和false。值1和0为int类型,不能隐式转换为。

  • 在CodeReview上,我发布了一段工作代码,并要求提供改进它的技巧。我得到的一个方法是使用布尔方法检查ArrayList是否有偶数个索引(这是必需的)。这是建议的守则: 因为我已经缠着那个特定的用户寻求了很多帮助,所以我决定是时候缠着SO社区了!我真的不明白这是怎么回事。调用该方法并将ArrayList的大小作为参数(即ArrayList有十个元素,编号=10)。 我知道一个单独的同时运行数字

  • 问题内容: 不出所料,空元组不包含1 但是返回的值不等于 换一种方式来看,运算符返回的a既不是也不是: 但是,如果对原始表达式加上括号,则会恢复正常行为 或其值存储在变量中 在Python 2和Python 3中都观察到此行为。 你能解释发生了什么吗? 问题答案: 您正在遇到比较运算符链接;也 没有 意思。 相反,比较是链接在一起的,该表达式的真正含义是: 因为已经为false,所以将完全忽略链接

  • 问题内容: 快速提问: 在JSONNet中-如何获取布尔true / false以序列化为布尔1/0 我可以看到我们如何处理空值,而所有这些似乎都找不到如何执行此操作。 这可能吗? 问题答案: 您可以像这样实现自定义转换器:

  • 问题内容: 假设我有下表: 从上表中,我要: 结果应为: 如果定义的ID中的任何行对特定列都为true,则我们假设结果为true。 问题答案: 使用聚合函数。 手册: 如果至少一个输入值是true,则为true,否则为false

  • 我有一个PreferentFragment,它的内容是从。包含CheckBoxPreference的xml文件 如您所知,当用户与此Preance交互时,共享首选项对象会自动更新,以便android: key现在包含适当的布尔值。 但是,我想使用String而不是Boolean:是否有任何方法可以使CheckBoxPreection使用String值而不是Boolean值,以便我以后可以使用该键调