MessagePack — комп’ютерний формат обміну даними, призначений для двійкового представлення простих структур даних наподобі масивів і асоциативних масивів. MessagePack aims to be as compact and simple as possible. Офіційна реалізація існує для багатьох мов програмування, таких як C, C++, C#, D, Erlang, Go, Haskell, Java, JavaScript, Lua, OCaml, Perl, PHP, Python, Ruby, Scala і Smalltalk.[2]
Структури даних і синтаксис
Data structures processed by MessagePack loosely correspond to those used in JSON format. Вони включають перелічені нижче типи елементів:
значення відсутнє (nil)
булеві дані, можливі значення яких є фальш (false) і істина (true)
цілі числа розміром до 64 бітів
числа з плаваючою комою - IEEE одинарної і подвійної точності
байтові масиви, які використовуються для представлення стрічкових і двійкових даних
переліки чи масиви
асоціативні масиви, мапи чи словники
Порівняння з іншими форматами
MessagePack більш щільний ніж JSON, але має обмеження по розмірах масивів і цілих чисел. З іншого боку, він підтримує бінарні дані і стрічки, кодування яких відмінне від UTF-8.
У порівнянні з BSON, MessagePack щильніше пакує дані. Наприклад BSON потребує закінчення всіх стрічок нульовим байтом та вставлення стрічкових індексів для переліків, але у то же час MessagePack не робить цього. Також MessagePack забезпечує щільніше представлення невеликих цілих чисел, коротких переліків і асоціативних масивів.