CJON v1.0 (Compact JSON)

While developing the idea of taking a digital step backward to solve modern alternative digital data transmission problems, I began designing a prototype of an Arduino-based device that would act as both modem and receiver. As I dug deeper into the problem, I also realized that the SMS channel could be used for short data, where a 160-character SMS (GSM 7-bit) would be enough. In many cases that is sufficient, and larger packets can be split into chunks and reassembled on the receiving side.
To link such fragments together, you can add metadata to each message: the sequence number, the total number of chunks, and an identifier. This is similar to the UDH (User Data Header) standard, but because using UDH requires PDU mode—which is often unavailable on Arduino—a simpler approach can be used: a custom pseudo-header format.
In this approach, each fragment begins with a special # character, followed by:
- a message identifier (2–3 characters),
- the current fragment number (1 character, from 0...9, a...Z),
- the total number of fragments (1 character, from 0...9, a...Z).
Example header: #0010Z, where:
- 00 is the message ID (it can be generated, for example, as a compact representation of the current time on the source device),
- 1 is the fragment sequence number,
- Z is the total number of fragments.

CJON (Compact JSON-like Object Notation) v1.0 Specification

Binary formats

Text formats