Java 可以使用Jackson将静态类转换为JSON吗?

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

我想知道是否可以用Jackson转换静态类,而不是自己做解析器。例如,我有下一个静态类:

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" ]
  }
}