如何使结构对象可以在 Thrift IDL 中具有任何附加字段

How to make Struct Objects can have any additional fields in Thrift IDL

如何使任何结构对象包含结构本身未定义的任何字段。例如

struct Point {
   1: required x i32
   2: optional y i32
}

不,如果有人也在结构中传递 z 变量,它就会通过。那么,如何使结构处理额外的字段?

关于 Thrift 的一个关键是 IDL 预先定义了所有内容,因此生成的代码非常紧凑并且切题(因此速度很快)。所以一般来说,这是不可能的设计。

虽然可以将附加数据视为一种 blob(文本或二进制)并通过其他方式 de/serialize 来处理它们,但这可能是一种选择:

struct Point {
   1: x i32
   2: y i32
   3: binary more_data
}

more_data 字段可能是由其他 Thrift 步骤序列化的位,也可能是某事。完全不同,例如压缩 JSON 或其他最适合的内容。

该方法的明显缺点是您需要两个步骤来进行序列化和反序列化而不是仅一步:您需要一个用于内部 blob 内容,一个用于外部 Thrift 胶囊。这是否是您的用例的问题 - 我不能告诉您。