in jsonschema-kafkaconnect-converter/src/main/java/com/amazonaws/services/schemaregistry/kafkaconnect/jsonschema/typeconverters/StructTypeConverter.java [187:219]
public JsonNode toJson(final Schema schema,
final Object value,
final JsonSchemaDataConfig config) {
connectValueToJsonNodeConverter = new ConnectValueToJsonNodeConverter(config);
Struct struct = (Struct) value;
if (!struct.schema()
.equals(schema)) {
throw new DataException("Mismatching schema.");
}
// Handle JSON Union/One Of type Schemas that are not resulted from Optional
// e.g.
// {"oneOf":[{"type":"integer","connect.type":"int32"},{"type":"string"}]}
if (JsonSchemaConverterConstants.JSON_SCHEMA_TYPE_ONEOF.equals(schema.name())) {
for (Field field : schema.fields()) {
Object obj = struct.get(field);
if (obj != null) {
return connectValueToJsonNodeConverter.convertToJson(field.schema(), obj);
}
}
return connectValueToJsonNodeConverter.convertToJson(schema, null);
} else {
ObjectNode obj = JSON_NODE_FACTORY.objectNode();
for (Field field : schema.fields()) {
if (struct.get(field) != null) {
obj.set(field.name(),
connectValueToJsonNodeConverter.convertToJson(field.schema(), struct.get(field)));
}
}
return obj;
}
}