Я хотел бы отправить сообщение JSON в тему kafka с авро-схемой.
Авро-схема допускает несколько типов:
{
"name":"typeA",
"type":[
"int",
"null"
],
"default":null
}
Если значение равно нулю, все в порядке.Если тип int
, как в этом случае, это должно быть указано явно.Посмотреть этот билет AVRO-1582 .
У меня есть этот JSON:
{
"typeA":12345,
"typeB":[
{
"feature":1,
"value":"1"
},
{
"feature":2,
"value":"2"
}
],
"typeC":[
{
"a":12345,
"data":[
{
"a":12345,
"b":[
12345,
12345,
12345
]
}
]
}
]
}
Я хотел бы преобразовать в этот JSON:
{
"typeA":{
"int":12345
},
"typeB":{
"array":[
{
"feature":1,
"value":"1"
},
{
"feature":2,
"value":"2"
}
]
},
"typeC":{
"array":[
{
"a":12345,
"data":[
{
"a":12345,
"b":[
12345,
12345,
12345
]
}
]
}
]
}
}
Можно ли преобразовать "typeA":12345
в "typeA":{"int":12345}
?Существует простой способ решения этой проблемы?
Я знаю тип каждого поля, чтобы я мог использовать регулярное выражение в JAVA:
json.replaceAll("typeA\":([^,]*),\"", "typeA\":{\"int\":$1},\"");
Трудно обрабатывать массивы или последний элемент JSON,Как я могу решить эту проблему?