输入有关给定的Java json注释类的信息

时间:2018-10-29 10:37:35

标签: java json

给定了一个带有JSON注释的Java类,我正在寻找一些实用程序来获取其类型信息。

例如具有以下类结构:

class A extends B {
  @JsonIgnore
  int _some_internal_field;
  int f1;
  C f2;
}
class B {
  boolean f3;
  String f4;
}
class C {
  float f5;
}

我想打电话

System.out.println(
  jsonTypeInfoFrom(A.class)
 .toString());

并获得:

{
  "f1": "int",
  "f2": {
    "f5": "float"
  },
  "f3": "boolean",
  "f4": "string"
}

在哪里可以找到这样的jsonTypeInfoFrom(Class)方法?调查了杰克逊本人,但找不到(至今)。

请帮助:)

艾德里安。

2 个答案:

答案 0 :(得分:1)

您可以使用jacksin-module-jsonSchema库。您可以使用以下依赖项添加库:

>       <dependency>
            <groupId>com.fasterxml.jackson.module</groupId>
            <artifactId>jackson-module-jsonSchema</artifactId>
            <version>2.9.5</version>
        </dependency>

这是从Java类生成json模式的示例代码:

  SchemaFactoryWrapper schemaFactory = new SchemaFactoryWrapper();
  ObjectMapper mapper = new ObjectMapper();
  mapper.acceptJsonFormatVisitor(Entity.class, schemaFactory);
  JsonSchema resultSchema = schemaFactory.finalSchema();
  System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(resultSchema));

答案 1 :(得分:0)

<select multiple="multiple" size="10">
    <option value="4">user3@domain</option>
    <option value="3">user2@domain</option>
    <option value="2">user1@domain</option>
    <option value="1">user0@domain</option>
</select>