* commited initial code for hexagonal architecture * Deleting to check in again * Deleing to check in again * Push first code for Hexagonal Architecture * final code with UT for JSON to Java conversion * removed hexagonal-architecture code from last commit * BEL-5071 updated README * BAEL-5071: Undo README changes and added a nested object in the JSON example. * BAEL-5071: fixed whitespace/indentation in JsonToJavaClassConversion.java Co-authored-by: Vaibhav Jain <vaibhav.ashokjain@vodafone.com>
57 lines
2.0 KiB
Java
57 lines
2.0 KiB
Java
package com.baeldung.jsontojavaclass;
|
|
|
|
import java.io.File;
|
|
import java.io.IOException;
|
|
import java.net.URL;
|
|
|
|
import org.jsonschema2pojo.DefaultGenerationConfig;
|
|
import org.jsonschema2pojo.GenerationConfig;
|
|
import org.jsonschema2pojo.Jackson2Annotator;
|
|
import org.jsonschema2pojo.SchemaGenerator;
|
|
import org.jsonschema2pojo.SchemaMapper;
|
|
import org.jsonschema2pojo.SchemaStore;
|
|
import org.jsonschema2pojo.SourceType;
|
|
import org.jsonschema2pojo.rules.RuleFactory;
|
|
|
|
import com.sun.codemodel.JCodeModel;
|
|
|
|
public class JsonToJavaClassConversion {
|
|
|
|
public static void main(String[] args) {
|
|
String packageName = "com.baeldung.jsontojavaclass.pojo";
|
|
String basePath = "src/main/resources";
|
|
File inputJson = new File(basePath + File.separator + "input.json");
|
|
File outputPojoDirectory = new File(basePath + File.separator + "convertedPojo");
|
|
outputPojoDirectory.mkdirs();
|
|
try {
|
|
new JsonToJavaClassConversion().convertJsonToJavaClass(inputJson.toURI().toURL(), outputPojoDirectory, packageName, inputJson.getName().replace(".json", ""));
|
|
} catch (IOException e) {
|
|
System.out.println("Encountered issue while converting to pojo: " + e.getMessage());
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
|
|
|
|
public void convertJsonToJavaClass(URL inputJsonUrl, File outputJavaClassDirectory, String packageName, String javaClassName) throws IOException {
|
|
JCodeModel jcodeModel = new JCodeModel();
|
|
|
|
GenerationConfig config = new DefaultGenerationConfig() {
|
|
@Override
|
|
public boolean isGenerateBuilders() {
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public SourceType getSourceType() {
|
|
return SourceType.JSON;
|
|
}
|
|
};
|
|
|
|
SchemaMapper mapper = new SchemaMapper(new RuleFactory(config, new Jackson2Annotator(config), new SchemaStore()), new SchemaGenerator());
|
|
mapper.generate(jcodeModel, javaClassName, packageName, inputJsonUrl);
|
|
|
|
jcodeModel.build(outputJavaClassDirectory);
|
|
}
|
|
|
|
}
|