apache thrift无法生成递归结构

duc*_*cin 6 tree struct thrift

我想在apache thrift中表示一个标准的树结构,但是我遇到了以下问题:

[ERROR:/path_to_project/thrift/service.thrift:31] (last token was 'TCategoryTree')
Type "TCategoryTree" has not been defined.
Run Code Online (Sandbox Code Playgroud)

这些是我的节俭结构:

struct TCategory {
    1: required string name
}

struct TCategoryTree {
    1: required TCategory element,
    2: optional list<TCategoryTree> children
}
Run Code Online (Sandbox Code Playgroud)

第31行是2: optional list<TCategoryTree> children,我定义了一个与我现在定义的类型相同的字段.

可能是apache thrift不支持递归结构还是我在这里犯了某种错误?

编辑:我使用的是0.9.0版

Jen*_*nsG 7

是的,不幸的是,Thrift还不允许递归结构.有这种限制的解决方法,例如在传输数据结构时将其展平.在大多数情况下,这是可行的,尽管双方都需要一些额外的代码.

以下是一个很好的示例:http: //grokbase.com/t/thrift/user/0984cqwxen/recursive-datatypes


更新

目前的Thrift开发中继支持这一段时间了.要小心,因为它允许无限的引用循环(A引用B引用A ...),导致在尝试序列化时堆栈溢出.