0

I am using Java API like this

public void convertJsonToJavaClass(URL inputJsonUrl, File outputJavaClassDirectory, String packageName, String javaClassName) throws IOException {
    com.sun.codemodel.JCodeModel jcodeModel = new com.sun.codemodel.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);
}

The input Json schema file has properties that look like this:

{
"type": "object",
"properties": {
    "Market": {
        "type": "string"
    },
    "Dealer": {
        "type": "integer"
    },
    "Side": {
        "type": "string",
        "enum": ["Buy", "Sell", "Pay", "Receive", "Undisclosed"]
    },
    "Package": {
        "type": "string",
        "enum": ["Y", "N"]
    }
},
"required": ["Market", "Side"]
}

The default output is 5 POJO classes, 1 for each Json element with a Properties.java to collect all the POJO. Whereas I would like 1 POJO with the Json elements converted to Java primitives. What to do please? Is this Json schema layout and Java API code the best practise for jsonschema2pojo? Thanks

rupweb
  • 3,052
  • 1
  • 30
  • 57

1 Answers1

0

The problem was using return SourceType.JSON; for a JsonSchema.

When I changed to return SourceType.JSONSCHEMA; it created the 1 POJO class.

rupweb
  • 3,052
  • 1
  • 30
  • 57