highsource/jsonix-schema-compiler

Unable to convert XSD to Open API v3 Json schema

Opened this issue · 0 comments

I want to convert xsd to open api v3 json schema, as i asked to copilot he suggest jsonix library.
Here is the code suggested, but this code is not found in jar

try {
// Compile XSD to JAXB classes
XJC xjc = Jsonix.generateXJC(new File(xsdFilePath));
SchemaInfo schemaInfo = xjc.generateSchemaInfo();

        // Generate JSON schema
        JsonSchemaGenerator jsonSchemaGenerator = Jsonix.generateJsonSchemaGenerator(schemaInfo);
        JsonSchemaInfo jsonSchemaInfo = jsonSchemaGenerator.generateJsonSchemaInfo();

        // Add required fields based on minOccurs
        Map<String, Boolean> requiredFields = getRequiredFieldsFromXsd(schemaInfo);
        jsonSchemaInfo = addRequiredFieldsToSchema(jsonSchemaInfo, requiredFields);

        // Serialize JSON schema to a file
        Jsonix.writeJsonSchemaInfo(jsonSchemaInfo, new File(jsonSchemaFilePath));

        System.out.println("Conversion successful! JSON schema saved at: " + jsonSchemaFilePath);
    } catch (IOException e) {
        e.printStackTrace();
    }

private static Map<String, Boolean> getRequiredFieldsFromXsd(SchemaInfo schemaInfo) {
// Implement logic to extract required fields from schemaInfo
// For each field, map its name to true if minOccurs > 0, otherwise false
// Example: { "uniqueReferenceNumber": true, "recordLocator": true, ... }
// You'll need to adapt this part to your specific XSD
Map<String, Boolean> requiredFields = new HashMap<>();
// ... populate requiredFields ...
return requiredFields;
}

private static JsonSchemaInfo addRequiredFieldsToSchema(JsonSchemaInfo jsonSchemaInfo,
                                                        Map<String, Boolean> requiredFields) {
    // Add required fields to the existing JSON schema
    // Modify jsonSchemaInfo to indicate required fields
    // Example: Set "required" property for each field based on requiredFields map
    // You'll need to adapt this part to your specific JSON schema structure
    // ...
    return jsonSchemaInfo;
}