将 json 字符串转换为 Java 源代码无效
convert json string to Java source code not working
我有一个动态 JSON 模式,我需要在 运行-time
将其转换为 Java 源代码
我发现这个 Jackson 的例子看起来很 common
代码 运行 没问题,没有异常但没有生成任何东西。
当我破坏 json 结构时(只是为了测试 jackson 是否正常工作)我确实遇到了 Jackson 异常...
@Test
public void jsonToJava() throws IOException {
JCodeModel codeModel = new JCodeModel();
String schemaContents ="{\"test\":\"test\"}";
GenerationConfig config = new DefaultGenerationConfig() {
@Override
public boolean isGenerateBuilders() {
return true;
}
};
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
mapper.generate(codeModel, "HelloWorldClass", "com.my.package", schemaContents);
File directory = new File("C:\temp\gen");
directory.mkdirs();
codeModel.build(directory);
}
我对该库一无所知,但该示例似乎无法正常工作。根据答案 here,您需要覆盖 DefaultGenerationConfig 中的另一个方法才能使其正常工作。将以下代码添加到您的示例对我有用:
@Override
public SourceType getSourceType() {
return SourceType.JSON;
}
我有一个动态 JSON 模式,我需要在 运行-time
将其转换为 Java 源代码
我发现这个 Jackson 的例子看起来很 common
代码 运行 没问题,没有异常但没有生成任何东西。
当我破坏 json 结构时(只是为了测试 jackson 是否正常工作)我确实遇到了 Jackson 异常...
@Test
public void jsonToJava() throws IOException {
JCodeModel codeModel = new JCodeModel();
String schemaContents ="{\"test\":\"test\"}";
GenerationConfig config = new DefaultGenerationConfig() {
@Override
public boolean isGenerateBuilders() {
return true;
}
};
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
mapper.generate(codeModel, "HelloWorldClass", "com.my.package", schemaContents);
File directory = new File("C:\temp\gen");
directory.mkdirs();
codeModel.build(directory);
}
我对该库一无所知,但该示例似乎无法正常工作。根据答案 here,您需要覆盖 DefaultGenerationConfig 中的另一个方法才能使其正常工作。将以下代码添加到您的示例对我有用:
@Override
public SourceType getSourceType() {
return SourceType.JSON;
}