支持标记联合的序列化格式

Serialization formats that support tagged unions

这个问题 been asked 早在 2012 年,但我正在寻找新的更新。

是否有支持标记联合(又名和类型)的序列化格式?我的要求是它有 Java 和 .Net 客户端库,它应该是 "reasonable mature"。性能不是主要问题。

A​​vro 提供部分支持,但不允许嵌套联合(http://avro.apache.org/docs/1.7.6/spec.html#Unions). Cap'n Proto appears to have better support, but I'm not sure if it is production ready yet. Transit doesn't have direct support, but does provide an extension mechanism 可能能够支持标记联合。

对以上选择还有其他建议或意见吗?

Protocol Buffers 2.6.0 版以 the oneof declaration 的形式添加了对标记联合的支持,但看起来 protobuf-net 最近没有更新,所以我猜它还不支持这个.

Cap'n Proto 在很多地方用于生产(例如 CloudFlare),但 C# 和 Java 实现确实相对较新。

(披露:我是 Cap'n Proto 的作者,也是 Google 的大部分开源 Protobuf 代码的作者。)