UBJSON - UBJSON

UBJSON
autor original (s) The Buzz Media, LLC
Versão estável
projecto 12
Escrito em vários idiomas
Sistema operacional Qualquer
Plataforma Multi-plataforma
Tipo intercâmbio de dados
Licença Apache 2.0
Local na rede Internet ubjson .org

Universal Binary JSON ( UBJSON ) é um computador formato de dados de intercâmbio. É uma forma binária imitando directamente JSON , mas exigindo menos bytes de dados. Que pretende alcançar a generalidade do JSON, combinado com ser muito mais fácil de processar do que JSON.

Fundamentação e Objetivos

UBJSON é uma proposta sucessor BSON , BJSON e outros. UBJSON tem os seguintes objetivos:

  • compatibilidade completa com a especificação JSON - existe um mapeamento 1: 1 entre JSON padrão e UBJSON.
  • Facilidade de implementação - incluindo apenas os tipos de dados que são amplamente apoiadas em linguagens de programação populares de modo que não há problemas com certas línguas não ser suportados bem.
  • Facilidade de uso - pode ser rapidamente compreendido e adotado.
  • Velocidade e eficiência - UBJSON usa representações de dados que são (mais ou menos) 30% menor do que os seus homólogos JSON compactados e são otimizados para análise rápida. serialização streaming é suportado, o que significa que a transferência de UBJSON através de uma conexão de rede pode iniciar o envio de dados antes que o tamanho final dos dados é conhecida.

tipos de dados e sintaxe

UBJSON dados pode ser um valor ou um recipiente .

tipos de valor

UBJSON usa um único tupla binário para representar todos os tipos de valor JSON:

   type [length] [data]

Cada elemento no tuplo é definido como:

tipo

O tipo é um 1 byte ASCII de caracteres usado para indicar o tipo de dados que se lhe segue. Os caracteres ASCII foram escolhidos para fazer andar manualmente e os dados de depuração armazenados no formato UBJSON tão fácil quanto possível (por exemplo, tornando os dados relativamente legíveis em um editor hexadecimal). Tipos estão disponíveis para os cinco tipos de valor JSON. Há também um não-op tipo usado para fluxo de keep-alive.

números de alta precisão são representados como, UTF-8 valor numérico arbitrariamente longa-codificado string.

comprimento (opcional)

O comprimento é um número inteiro (int8, uint8, int16, int32 ou int64) que codifica o tamanho da carga de dados em bytes. É usada para cordas, números de alta precisão e recipientes opcionalmente. Eles são omitidos para outros tipos.

O comprimento é codificado seguindo a mesma convenção de números inteiros, incluindo assim o seu próprio tipo. Por exemplo, a corda helloé codificado como S, U, 0x05, h, e, l, l, o.

dados (opcional)

Uma sequência de bytes que representa os dados binários reais para este tipo de valor. Todos os números estão em big-endian ordem.

tipos de contêineres

Da mesma forma para JSON, UBJSON define dois tipos de contentores: matriz e objecto .

As matrizes são sequências de elementos ordenados, representada como um [seguido de zero ou mais elementos de valor e o tipo de recipiente e uma fuga ].

Os objectos são conjuntos de elementos marcado, representada como um {seguido de zero ou mais pares de valores chave e uma fuga }. Cada chave é uma string com o Scaráter omitido, e cada "valor" pode ser qualquer elemento de valor ou tipo de recipiente.

Alternativamente, matrizes e objectos pode indicar o número de elementos que contêm como #seguido por um número inteiro antes do seu primeiro elemento, caso em que o arrasto ]ou }é omitido. Além disso, se todos os elementos têm o mesmo tipo, os tipos podem ser suprimidos e substituídos por um único $seguido pelo tipo, caso em que a contagem de elemento deve seguir imediatamente. Por exemplo, a matriz [ "a", "b", "c"] podem ser representados como [, $, C, #, U, 0x03, a, b, c.

Representação

O tipo MIME 'application / ubjson' é recomendado, pois é a extensão de arquivo '.ubj', armazenados em um sistema de arquivos.

Veja também

links externos