Apache Avro

Avro is a row-oriented remote procedure call and data serialization framework developed within Apache's Hadoop project.

It has two different types of schema languages: one for human editing (Avro IDL) and another which is more machine-readable based on JSON.

[3] It is similar to Thrift and Protocol Buffers, but does not require running a code-generation program when a schema changes (unless desired for statically-typed languages).

Serialization:[8] File "users.avro" will contain the schema in JSON and a compact binary representation[9] of the data: Deserialization: This outputs: Though theoretically any language could use Avro, the following languages have APIs written for them:[10][11] In addition to supporting JSON for type and protocol definitions, Avro includes experimental[24] support for an alternative interface description language (IDL) syntax known as Avro IDL.

Previously known as GenAvro, this format is designed to ease adoption by users familiar with more traditional IDLs and programming languages, with a syntax similar to C/C++, Protocol Buffers and others.