C# преобразовать AVRO в JSON - PullRequest
0 голосов
/ 07 мая 2020

Существует ли реализация C# для преобразования десериализованного AVRO

<GenericRecord>

обратно в обычный формат JSON? Я успешно прочитал topi c от Kafka и использовал AvroDeserializer, но я хочу преобразовать его в формат JSON.

Вот пример: Simple JSON:

{       
        "value": {
            "eventCreatedTimestamp": 1588694347577,
            "iouDecision": "PLANE",
            "iouDecisionReason": {
                "value": "Optimal"
            }
        }
    }

То же из десериализованного Generi AVRO c .Record:

{Schema: 
{"type":"record","name":"TheCustomerDecisionEvent",
"namespace":"com.farmxxx.tst.property.service.options.iou.messaging.avro","fields":
[{"name":"eventCreatedTimestamp","type":["null","long"]},
{"name":"iouDecision","type":["null",{"type":"enum",
"name":"TheType",
"namespace":"com.farmxxx.tst.property.service.options.iou.messaging.avro",
"symbols":["HRMR","FIELD","PLANE"]}]},
{"name":"iouDecisionReason","type":["null",{"type":"record","name":"iouDecisionReason",
"namespace":"com.farmxxx.tst.property.service.options.iou.messaging.avro",
"fields":[{"name":"value","type":["null","string"]}]}]}]}
,
 contents: { eventCreatedTimestamp: 1588694347577, 
 iouDecision: Schema: {"type":"enum","name":"TheType",
 "namespace":"com.farmxxx.tst.property.service.options.iou.messaging.avro",
 "symbols":["HRMR","FIELD","PLANE"]}, value: PLANE,
 iouDecisionReason: Schema: {"type":"record","name":"iouDecisionReason",
"namespace":"com.farmxxx.tst.property.service.options.iou.messaging.avro",
"fields":[{"name":"value","type":["null","string"]}]}, contents: { value: Optimal, }, }}

Итак, задача - вернуться к Simple JSON из AVRO Generi c .Record.

Ответы [ 2 ]

1 голос
/ 15 мая 2020

Решение можно найти, используя:

https://github.com/AdrianStrugala/AvroConvert

Avro2Json.

С этим вы можете прочитать топи c от Кафки и перевести его в простой JSON. Я использую этот простой JSON для передачи другим клиентам, которые не хотят знать о формате записи AVRO и т. Д. c.

Большое спасибо автору репозитория AvroConvert Github.

0 голосов
/ 08 мая 2020

Как было предложено в комментариях, я использовал https://github.com/kristofferjalen/AvroConverter для этого в прошлом (я не связан с проектом).

README для этой страницы указывает, что это довольно проста в использовании. Просто установите его пакет из NuGet, введя Install-Package AvroConverter в командной строке диспетчера пакетов (или в своем интерфейсе командной строки, если не используется Visual Studio), а затем вызовите его со следующим кодом:

var path = @"C:\your\avro\file\path.avro";
var fileInfo = new System.IO.FileInfo(path);
var json = AvroConvert.ToJson(fileInfo);
...