Internet object

Introduction

A small article about the internet object. Internet object is one more format for sending data over the wire. Specifically:

It is designed for transferring data over internet, Internet Object is a new age serialization/data-interchange format. It is human readable, thin, self explanatory, robust and schema oriented. It was developed by Mohamed Aamir Maniar out of frustrations associated with JSON.

by https://internetobject.org

The internet object is separated is two parts: The schema and the values (internet) object.

Schema

name,
 age: {
   int,
   min: 20
 },
 address: {
   street,
   city,
   state
 },
 active?: bool,
 tags?: [
   string
 ]

Please pay attention to the age part of the template. It has a restriction of minimum twenty years of age. The schema includes it’s own validations. Additionally it explicitly refers to the required types: active?: bool, tags?: [string]

Object

Spiderman,
 25,
 {
   BondStreet,
   NewYork,
   NY
 },
 T,
 [
   agile,
   swift
 ]

The internet object’s goal are the following

  • Thin & Lightweight: The internet object‘s author, declares that compared with JSON, it reduces the data size to around 40%.
  • Built-in Schema & Validations: Internet Object was designed with a robust schema support in mind. It checks the data and saves developers’ time by providing built-in data validation support at both ends (Sending and Receiving).
  • Well Planned & Designed:Designed after carefully considering the needs; Internet Object encourages the separation of definitions and metadata from data, favors minimalism, supports streaming of large collection and much more“.

    Well, in principle, I support this notion, but we have to see how internet object will be able to handle complex responses objects
  • Simple & Easy: “Internet Object is a minimalistic, text-based, language-independent and human-readable data-interchange format. It is easy on the eyes and quick to start”.

    At least for small objects, this is true.

Benchmarks

Based on their benchmarks, we have the following results.

For 1 Record(s) 
=============== 
IO Data: 495 
IO Data with Header: 671 
JSON: 887 
IO is 44.19% smaller than JSON! 
IO with header is 24.34% smaller than JSON! 

For 100 record(s) 
================= 
IO Data: 50862 
IO Data with Header: 51038 
JSON: 89963 
IO is 43.46% smaller than JSON! 
IO with header is 43.27% smaller than JSON! 

For 1000 record(s) 
================== 
IO Data: 506234 
IO Data with Header: 506410 
JSON: 897235 
IO is 43.58% smaller than JSON! 
IO with header is 43.56% smaller than JSON! 

Is there a parser?

Yes there is, but is not ready yet. Check their github repository.

How do we got here?

It’s been almost twenty years, since JSON and its derivatives came into our lifes, like JSON-RPC and SOAPjr. Other alternatives are YAML and the oldest of all, XML that was dominant during the SOAP era.

If you want to read more about it, here is and article from internet object’s author. Enjoy!

References

[1]. https://internetobject.org/

[2]. https://github.com/maniartech/InternetObject-vs-JSON-benchmark