Есть много вопросов и ответов на stackoverflow по теме, но никто не помогает.Avro: deserialize json - схема с необязательными полями
У меня есть схема с дополнительным значением:
{
"type" : "record",
"name" : "UserSessionEvent",
"namespace" : "events",
"fields" : [ {
"name" : "username",
"type" : "string"
}, {
"name" : "errorData",
"type" : [ "null", "string" ],
"default" : null
}]
}
И я пытаюсь десериализации JSON ж/о этой области:
{
"username" : "2271AE67-34DE-4B43-8839-07216C5D10E1",
"errorData" : { "string":"070226AC-9B91-47CE-85FE-15AA17972298"}
}
с помощью кода:
val reader = new GenericDatumReader[GenericRecord](schema)
val decoder = DecoderFactory.get().jsonDecoder(schema, json)
reader.read(null, decoder)
и Я получил: org.apache.avro.AvroTypeException: Expected field name not found: errorData
Единственный способ, который работает в формате JSON
}
Есть ли способ десериализации JSON без этой области?
Другой вопрос: когда это поле здесь, я должен написать
{
"username" : "2271AE67-34DE-4B43-8839-07216C5D10E1",
"errorData" : { "string":"070226AC-9B91-47CE-85FE-15AA17972298"}
}
Есть ли способ десериализации "нормальный":
JSON{
"username" : "2271AE67-34DE-4B43-8839-07216C5D10E1",
"errorData" : "070226AC-9B91-47CE-85FE-15AA17972298"
}
?
Вы используете scala? – shivam