关于给定java json注释类的类型信息
给定一个JSON注释的Java类,我正在寻找一些实用程序来获取其类型信息 例如,具有以下类别结构:关于给定java json注释类的类型信息,java,json,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)
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)
方法?调查了杰克逊本人,但还没有找到
请帮忙:)
Adrian。//使用refelcting Api获取声明的字段,并使用HashMap创建json模式
//Use refelcting Api to get the declared fields and create the json schema using HashMap
public static String getJsonSchema(Class clazz) throws IOException {
Field[] fields = clazz.getDeclaredFields();
List<Map<String,String>> map=new ArrayList<Map<String,String>>();
for (Field field : fields) {
HashMap<String, String> objMap=new HashMap<String, String>();
objMap.put("name", field.getName());
objMap.put("type", field.getType().getSimpleName());
objMap.put("format", "");
map.add(objMap);
}
ObjectMapper mapper = new ObjectMapper();
String json = mapper.writeValueAsString(map);
return json;
}
公共静态字符串getJsonSchema(类clazz)引发IOException{
Field[]fields=clazz.getDeclaredFields();
列表映射=新的ArrayList();
用于(字段:字段){
HashMap objMap=新的HashMap();
put(“name”,field.getName());
put(“type”,field.getType().getSimpleName());
put(“格式”,“格式”);
map.add(objMap);
}
ObjectMapper mapper=新的ObjectMapper();
字符串json=mapper.writeValueAsString(map);
返回json;
}
您可以使用库。可以使用以下依赖项添加库:
> <dependency>
<groupId>com.fasterxml.jackson.module</groupId>
<artifactId>jackson-module-jsonSchema</artifactId>
<version>2.9.5</version>
</dependency>
这可能会满足您的需要:我链接的问题的答案似乎不推荐,看起来您应该使用jackson模块(不知道它是否包含在标准的jackson安装中)。两者都会生成一个json模式,该模式不是您要求的格式,但包含相同的数据看起来是一个不错的开始,但它不会忽略带注释的字段。另外,为什么
格式字段是空的?//获取声明的annotations[]annotations=field.getDeclaredAnnotations();虽然我正在寻找一个班轮。。。这是否适用于任何嵌套级别结构?
SchemaFactoryWrapper schemaFactory = new SchemaFactoryWrapper();
ObjectMapper mapper = new ObjectMapper();
mapper.acceptJsonFormatVisitor(Entity.class, schemaFactory);
JsonSchema resultSchema = schemaFactory.finalSchema();
System.out.println(mapper.writerWithDefaultPrettyPrinter().writeValueAsString(resultSchema));