Java 可以使用Jackson将静态类转换为JSON吗?
我想知道是否可以用Jackson转换静态类,而不是自己做解析器。例如,我有下一个静态类:Java 可以使用Jackson将静态类转换为JSON吗?,java,json,class,static,jackson,Java,Json,Class,Static,Jackson,我想知道是否可以用Jackson转换静态类,而不是自己做解析器。例如,我有下一个静态类: public static class SQL { public enum Table { CREATE, ALTER } public enum Database { CREATE } } 我想转换成下一个Json字符串 { "SQL" : { "Table": {"CREAT
public static class SQL {
public enum Table {
CREATE,
ALTER
}
public enum Database {
CREATE
}
}
我想转换成下一个Json字符串
{
"SQL" :
{
"Table":
{"CREATE": "CREATE", "ALTER": "ALTER"},
{"CREATE": "CREATE"}
}
}
这是因为我可以在Java中使用这个类来创建伟大的字符串,我希望在Javascript端有类似的功能
我试着用
new ObjectMapper.writeValuesToString(SQL);
但是,这是不可能的,因为它只转换实例化的对象您可以通过使用反射实现所需的功能。您可以简单地将方法添加到
SQL
类中,该类可以返回Map
public static Map<String, ?> toJsonMap() {
Map<String, Object> map = new HashMap<String, Object>();
Class<?>[] declaredClasses = SQL.class.getDeclaredClasses();
for (Class<?> clazz : declaredClasses) {
if (clazz.isEnum()) {
map.put(clazz.getSimpleName(), clazz.getEnumConstants());
} else {
// ...
}
}
return Collections.singletonMap(SQL.class.getSimpleName(), map);
}
以上程序打印:
{
"SQL" : {
"Database" : [ "CREATE" ],
"Table" : [ "CREATE", "ALTER" ]
}
}
Jackson序列化对象字段。枚举类主体不是字段。JSON示例非常详细。复制钥匙的目的是什么?
{
"SQL" : {
"Database" : [ "CREATE" ],
"Table" : [ "CREATE", "ALTER" ]
}
}