【问题标题】:Jackson ObjectMapper default property orderJackson ObjectMapper 默认属性顺序
【发布时间】:2020-08-23 02:33:58
【问题描述】:

有谁知道在使用 ObjectMapper 将对象序列化为 JSON 时是否存在特定的默认属性顺序(即在没有任何特定排序顺序配置或 @JsonPropertyOrder 注释的情况下?

我还没有在文档中找到任何内容。我可以检查源代码,但我想我会先在这里快速检查一下——我猜它是基于来自反射或内省的任何排序,而我不久前发现的这个 post 表明没有任何保证订购(我可以再次检查来源,但如果有人碰巧知道,那就太好了)。

【问题讨论】:

    标签: java serialization jackson


    【解决方案1】:

    这篇文章仍然是最新的。默认顺序取决于给定的实现(又名版本)。您需要检查实施:

    • com.fasterxml.jackson.databind.introspect 包中,例如:POJOPropertiesCollector 类。
    • com.fasterxml.jackson.databind.ser 包中,例如:BeanSerializerBeanSerializerFactory 类。
    • 使用的注解,例如:JsonIgnore

    还取决于:

    • 启用的功能,例如:REQUIRE_SETTERS_FOR_GETTERS
    • 启用修饰符,例如:com.fasterxml.jackson.databind.ser.BeanSerializerModifier class。

    来自other side

    对象是一组无序的名称/值对。

    你不应该依赖它。

    【讨论】:

      【解决方案2】:

      根据this documentation,默认情况下,序列化 JSON 中的字段顺序取决于 JDK。可能是申报顺序,但不保证。

      【讨论】:

        猜你喜欢
        • 2015-02-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多