将Java类结构转换为yml文件

时间:2015-10-29 09:06:12

标签: java json yaml

我在Java中有一个复杂的模型类,它具有不同类的属性。我想以yml格式获取类的模式以提高可读性。我能够将类的结构转换为JSON文件,但我觉得yml不那么杂乱且易于准备。

示例 发件人

public class Phone {
    public String name;
    public String number;
}

Phone:
    fields:
      name:
        type: String
      number:
        type: String

4 个答案:

答案 0 :(得分:2)

Jackson库提供了从Java类生成JSONSchema的功能。您应该能够将其序列化为YAML,尽管我还没有真正测试过这部分。这是它的样子:

ObjectMapper m = new ObjectMapper();
SchemaFactoryWrapper visitor = new SchemaFactoryWrapper();
m.acceptJsonFormatVisitor(m.constructType(Phone.class), visitor);
JsonSchema jsonSchema = visitor.finalSchema();

ObjectMapper mapper = new ObjectMapper(new YAMLFactory());
mapper.writeValue(yamlFile, jsonSchema);

如果您使用枚举

,则可能需要此配置
mapper.configure(SerializationConfig.Feature.WRITE_ENUMS_USING_TO_STRING, true);

Yaml moduleJSON schema module

的github页面上的更多详细信息

答案 1 :(得分:0)

您可以尝试http://jyaml.sourceforge.net/ 该项目已不再有效。

答案 2 :(得分:0)

另一种方法可能是使用ASM库读取类文件。它有一个很好的访问者API,让你可以相当简单地将字节码转换为其他表示,如YAML(从这里开始:http://asm.ow2.org/asm50/javadoc/user/org/objectweb/asm/ClassVisitor.html)。但这可能对你的任务来说太过分了。

答案 3 :(得分:0)

From RAM to File

If your use case is to just serialize your existing objects, without reading them first, you might try the approach from this answer using Jackson; it just writes to a file an example object.

// Create an ObjectMapper mapper for YAML
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());

// Write object as YAML file
mapper.writeValue(new File("/path/to/yaml/file"), example);