我通过扩展faust.Record类来描述浮士德模型。我的输入json如下所示:
{
"1": "some_string"
"2": "some_string"
}因此,我必须创建类字段,仅使用数字命名。我知道,它通常限制在Python中,但是有什么解决方法吗,比如我的字段名称的别名?
我正在寻找Java中类似Jackson注解的东西:
import faust
class Model(faust.Record, serializer='json'):
@alias(field_name: '1')
first_name: str
@alias(field_name: '2')
last_name: str发布于 2021-04-26 21:49:30
如果没有合适的数据模型,没有简单的方法可以神奇地挽救一个主题。
在没有数据模型的情况下,您永远不应该编写主题。
正如@OneCricketeer建议的那样,你应该将未定义的主题作为字典来摄取。
之后,您可以编写一个使用此主题的代理,将您的模型转换为适当的数据模型,并将其写入主题。
class Person(faust.Record):
first_name: str
last_name: str现在你可以像预期的那样开始使用你的Person模型。
undeclared_json_topic = app.topic('name_of_your_input_topic')
person_topic = app.topic('person', value_type=Person)
@app.agent(undeclared_json_topic)
async def migrate_to_person(json_stream: faust.Stream) -> faust.Stream[Person]:
async for json in json_stream:
person = Person(first_name=json['1'], last_name=json['2'])
await person_topic.send(value=person)
yieldhttps://stackoverflow.com/questions/67248607
复制相似问题