# PSON: A Serialization Format for IoT Sensor Networks
## 2 Data Serialization Formats  
This paper presents a comparison between data serialization formats; in this section, we enumerate and describe the main characteristics of the data serialization formats included in the comparison. The data serialization formats included in this study are those with widespread use:  
* JSON, JavaScript Object Notation. The European Computers Manufacturers Association, ECMA, published the ECMA-404 standard, \"The JSON data interchange syntax\", whose latest update was the 2 nd edition, published in 2017 [29]. This document presents the most recent version of the standardized JSON language. As defined in the document, \"JSON is a lightweight, text-based, language-independent data interchange format. It was derived from the ECMAScript programming language, but is programming language independent. JSON defines a small set of structuring rules for the portable representation of structured data\". JSON is based on a subset of the JavaScript Programming Language Standard ECMA-262 3 rd Edition published in December 1999, and it is a very stable data-interchange language that has had few modifications since it was first presented in 2001 on the JSON organization website [30]. This stability is complemented by the fact that it uses conventions similar to the C-family of languages, such as C, C++, C#, Java, JavaScript, Perl, and Python, making JSON one of the most widely used data serialization formats. * BSON, Binary JSON. First developed by MongoBD [31] as a binary structure that encodes type and length information, BSON is currently maintained as an open binary-encoded serialization of JSON-like documents in [32], whose latest published specification version is 1.1. This document describes the three characteristics for which BSON was designed: \"Lightweight, Keeping spatial overhead to a minimum; Traversable, was designed to be tranversed easily; Efficient, Encoding data to BSONand decoding from BSON can be performed very quickly in most languages due to the use of C data types.\"
* Protocol Buffers, developed by Google as a mechanism for serialized structured data. Two versions have been published, Proto2 and Proto3, the specifications of which can be found in [33]. The most recent version of Protocol Buffers, proto3, supports generated code in Java, Python, Objective-C, Dart, Go, Ruby, and C#. The main objective of Protocol Buffers is to be a small, fast, and simple mechanism for data serialization and be language-neutral, platform-neutral, and extensible. * XML, Extensible Markup Language. Developed by six different XML Groups [34], each dedicated to a different aspect of the Information and Knowledge Domain, W3C [35], Extensible Markup Language (XML) is a text format derived from SGML in ISO 8879, which was designed to meet the challenges of large-scale electronic publishing, but the file was extensively used in the exchange of a wide variety of data on the Web and elsewhere. Its first publication was in 1997, and since then, many different specifications, which can be found in [36], have been published. * YAML, YAML Ai not Markup Language. Developed as an international collaboration, YAML resulted from the serialization format for Inline, Data::Denter module, developed by Ingy dot, and a simplification of XML, developed by [PERSON] and [PERSON]. The first specification was published in 2001, and the current version is YAML 1.2, published in 2009. All of the specifications can be found in [37]. YAML was integrated and built upon concepts of C, Java, Perl, Python, Ruby, RFC0822 (MAIL), RFC1866 (HTML), RFC2045 (MIME), RFC2396 (URI), XML, SAX, and SOAP. * MessagePack. Developed by [PERSON] in 2009, MessagePack is a binary serialization format that enables data exchange among multiple languages. Small integers are encoded into a single byte, and typical short strings require only one extra byte in addition to the strings themselves. There is only one specification, with the most recent update in 2017, which can be found in [38]. * Apache Thrift.