https://github.com/tcorral/JSONC
JSONC
=====
Atualize para a versão 1.0.0
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%