JSONC comprime seus dados JSON em até 80%

https://github.com/tcorral/JSONC

JSONC

=====

Atualize para a versão 1.0.0

Status da versão

Changelog

fundo

Um dos problemas que você pode ter ao desenvolver aplicações ricas para internet (RIA) usando Javascript é a quantidade de dados transportados de
e para o servidor.
Quando os dados vêm do servidor, esses dados podem ser GZipados, mas isso não é possível quando a grande quantidade de dados vem do
navegador para o servidor.

JSONC tem duas abordagens diferentes para reduzir o tamanho da quantidade de dados a serem transportados:

  • JSONC.compress – Comprime objetos JSON usando um mapa para reduzir o tamanho das chaves em objetos JSON.
    • Tenha cuidado com este método porque é realmente impressionante se você usá-lo com um JSON com uma grande quantidade de dados, mas pode ser horrível se você usá-lo para compactar objetos JSON com uma pequena quantidade de dados porque pode aumentar o tamanho final.
    • A taxa de compressão pode variar de 7,5% a 32,81% dependendo do tipo e dos valores dos dados.
  • JSONC.pack – Compactar objetos JSON usando algoritmo de compactação LZW, para fazer o trabalho JSONC usa a biblioteca lz-string de @pieroxy – https://github.com/pieroxy/lz-string/
    • Você pode usar o pacote para compactar qualquer objeto JSON, mesmo se esses objetos não foram compactados usando JSONC Consulte Uso para obter mais detalhes.

Uso

Comprimir um objeto JSON:

// Returns a JSON object but compressed.
var compressedJSON = JSONC.compress( json );

Descompacte um objeto JSON:

// Returns the original JSON object.
var json = JSONC.decompress( compressedJSON );

Compacte um objeto JSON normal como uma string LZW:

// Returns the LZW representation as string of the JSON object.
var lzwString = JSONC.pack( json );

Compacte um objeto JSON como uma string LZW depois de compactá-lo usando JSONC:

// Returns the LZW representation as string of the JSON object.
var lzwString = JSONC.pack( json, true );

Descompacte um objeto JSON normal de uma string LZW:

// Returns the original JSON object.
var json = JSONC.unpack( lzwString );

Descompacte um objeto compactado JSON usando JSONC de uma string LZW:

// Returns the original JSON object.
var json = JSONC.unpack( lzwString, true );

Exemplos de compressão

Exemplo data.js.

Original - 17331 bytes
Compressed using JSONC - 16025 bytes
Compression rate - 7.5%


Original compressed using lz-string - 3822 bytes
Compressed using JSONC using lz-string - 3689 bytes
Compression rate - 3.4%


Compression rate from original to compressed using JSONC and lz-string - 78.71%

Exemplo data2.js.

Original - 19031 bytes
Compressed using JSONC - 12787 bytes
Compression rate - 32.81%


Original compressed using lz-string - 3900 bytes
Compressed using JSONC using lz-string - 3113 bytes
Compression rate - 20.18%


Compression rate from original to compressed using JSONC and lz-string - 83.64%