Как предотвратить появление полей с нулевым значением в Avro IDL, чтобы усложнить сообщение JSON в теме KafkaJAVA

Программисты JAVA общаются здесь
Anonymous
Как предотвратить появление полей с нулевым значением в Avro IDL, чтобы усложнить сообщение JSON в теме Kafka

Сообщение Anonymous »

У меня есть разумная сложная иерархия объектов, которую я построил в IDL (только очень небольшая часть):

Код: Выделить всё

record Action {
Location location;
GeneralInformation? generalInformation=null
}
Сгенерированный исходный код содержит все классы. Все это компилируется, и я вижу сообщения, появляющиеся в шине сообщений. Эти сообщения используются другой стороной, и структура имеет значение.
Однако, когда я просматриваю сообщение по теме, я вижу:

Код: Выделить всё

{ "header": {
"sender": "generator",
"receiver": "local party"
},
"generalInformation": {
"nl.itjer.fin.actions.model.GeneralInformation": {
"reference": "ENX240042545",
"affectingParty": "DXBE98s",
"IBAN": "NL35BNQ2577899"
}
}
}
Сделав поле необязательным или допускающим значение NULL, элемент GeneralInformation получает дополнительный уровень с полным квалифицированным именем. Я вижу это для всех необязательных полей (добавленных вопросительным знаком). В отличие от обязательного поля, такого как заголовок.
Есть ли способ получить «чистый» JSON без дополнительного слоя с полностью определенным типом элемента?
Еще вопрос: тестирую это в теме, а это отнимает много времени. Итак, я захотел написать модульные тесты:

Код: Выделить всё

com.fasterxml.jackson.databiObjectMapper serializer = new ObjectMapper();
serializer.registerModule(new com.fasterxml.jackson.dataformat.avro.AvroModule());
assertEquals(-1, serializer.writeValueAsString(myObject).indexOf("nl.itjer"))
Но это приводит меня в ад зависимостей (из-за введения зависимости, содержащей AvroModule). Я, вероятно, смогу решить эту проблему, но мне хотелось бы знать, есть ли другие способы использования моих существующих зависимостей для проверки и проверки формата json.
версии:

Код: Выделить всё

org.apache.avro(including mvn generator Avro-plugin): 1.11.2
com.fasterxml.jackson 2.15.4
java: 21
Заранее благодарим за ваше время и ответы!

Подробнее здесь: https://stackoverflow.com/questions/788 ... in-kafka-t

Вернуться в «JAVA»