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

@JsonPropertyOrder不使用jackson模块jsonSchema

禹兴安
2023-03-14

我正在使用Jackson模块的最新分支-jackson-mode-jsonSchema,即2.4.4-Snapshot。

我试图使用@JsonPropertyOrder注释来维护POJO属性的顺序,但它似乎不尊重注释。

我的POJO示例如下-

import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonPropertyOrder({"a", "b"})
class Pojo {
    private String a;
    private String b;

    public Pojo(final String a, final String b) {
        this.a = a;
        this.b = b;
    }

    public void setA(final String a) {
        this.a = a;
    }

    public void setB(final String b) {
        this.b = b;
    }

    public String getA() {
        return this.a;
    }

    public String getB() {
        return this.b;
    }
}

杰克逊代码如下-

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.module.jsonSchema.JsonSchema;
import com.fasterxml.jackson.module.jsonSchema.factories.SchemaFactoryWrapper;

public class Test {

    public static void main(String[] args) throws JsonProcessingException {
        // TODO Auto-generated method stub
        final ObjectMapper mapper = new ObjectMapper();
        final SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
        mapper.acceptJsonFormatVisitor(mapper.constructType(Pojo.class), visitor);
        final JsonSchema jsonSchema = visitor.finalSchema();            
        System.out.println(mapper.writeValueAsString(jsonSchema));
    }

}

Json输出如下-

{
    "type": "object",
    "id": "urn:jsonschema:Pojo",
    "properties": {
        "b": {
            "type": "string"
        },
        "a": {
            "type": "string"
        }
    }
}

有人能建议我是否做错了什么,或者我们需要在杰克逊身上打开一个问题,因为我看到这种问题已经在2.3.2(https://github.com/FasterXML/jackson-dataformat-xml/issues/91)中关闭了吗?

共有1个答案

孟浩慨
2023-03-14

使用@JsonPropertyOrder(Alphaic=true)这将按字母顺序排列所有属性,适用于Jackson 1.9.13

 类似资料:
  • 我有1个应用程序和2个模块 框架结构 但我不能在MyApp中使用MyModule的文件。IDE显示我“无法访问”错误,我想扩展一个MyModule类的类。而且它不是从MyModule创建类的,有人对此有想法吗?怎么了?

  • 我正在使用Jackson模式模块为Rest API生成JSON模式,当开始使用https://github.com/fge/json-schema-validator针对对我的API的请求实现JSON模式验证时,我意识到Jackson生成的是模式v3,而验证器只支持V4-draft。在寻找其他java JSON模式生成器库之前,您能确认Jackson不支持V4吗?您能推荐其他java JSON模式

  • 你会对自己编写的 Puppet 代码感到羞愧吗?其他人看你的代码时会有恐惧感吗? 为了使你的 Puppet 配置清单更清晰且易于维护,一件最重要的事情就是将这些配置清单组织成 模块(modules)。 模块是对相关事物进行分组的一种简单方式;例如,一个 webserver 模块可能包含作为一个 Web 服务器所需的一切,包括 Apache 配置文件,虚拟主机配置模板以及部署这些所需的 Puppet

  • Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env python # -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' import sys def test(): args =

  • Python本身就内置了很多非常有用的模块,只要安装完毕,这些模块就可以立刻使用。 我们以内建的sys模块为例,编写一个hello的模块: #!/usr/bin/env python3 # -*- coding: utf-8 -*- ' a test module ' __author__ = 'Michael Liao' import sys def test(): args =

  • 问题内容: 谁能用我的2.10 Scala模块指向一个简单的Jackson序列化/反序列化示例?我正在寻找不需要逐字段注释或分配的基于反射的JSON,这似乎可以做到这一点,但是他们的文档中没有示例。 如果我有案例课: 因此,从他们的github自述文件中: 好吧,现在…?如何将p转换为JSON? 问题答案: 试一下: 编辑 只需确保将类声明为顶级即可,否则它将无法正常工作。