As we know, if we want to design and implement a programming language like JAVA, C++ and C language, we will reference the compilation theory. Similarly, if we would like to design and implement a data exchange format language, like JSON and Google protocol buffer to store the serialized objects, what theory shall we use to solve the problem? More precisely, does there exist a domain that study how to design a data exchange format and its corresponding books and publications?
The format shall be terse, robust, readable and have efficient en/decoding. The dilemma between binary format and textual format etc.