我正在尝试使用以下代码将JSON转换为Avro:
from fastavro import writer, reader, schema
from rec_avro import to_rec_avro_destructive, from_rec_avro_destructive, rec_avro_schema
avro_objects = (to_rec_avro_destructive(rec) for rec in all_obj[:100])
with open('json_in_avro.avro', 'wb') as f_out:
writer(f_out, schema.parse_schema(rec_avro_schema()), avro_objects)
字符串
它可以正常工作,但是all_obj中的JSON模式是这样的
{
'Date': '2023-07-16',
'Url': 'google.pt',
'Item': {'Title': 'abababab',
'Id': '28e3c5n',
'DedupId': None,
'ImageHash': None,
'Attributes': {'Cost': None,
'Area': None},
'PropertyDetail': []}
}
型
对此:
{
'Date': '2023-07-16',
'Url': 'google.pt',
'Item': {'_': {'Title': 'abababab',
'Id': '28e3c5n',
'DedupId': None,
'ImageHash': None,
'Attributes': {'_': {'Cost': None,
'Area': None}},
'PropertyDetail': {'_': []}}
}
型
为什么它似乎创建了这些'_'项?
谢谢你的帮助!
1条答案
按热度按时间ftf50wuq1#
_
来自rec_avro
库。但是,只要为数据定义了模式(应该这样做),就不需要使用该库。我不知道你的模式的所有细节,但我做了最好的猜测,这里有一个脚本,应该非常接近你正在寻找的东西:
字符串