Формат JSON со сжатием gzip - PullRequest
1 голос
/ 24 июня 2011

Мой текущий проект отправляет много данных в браузер в формате JSON с помощью запросов ajax.

Я пытался решить, какой формат мне использовать. Я имею в виду два

[
    "colname1" : "content",
    "colname2" : "content",
],
[
    "colname1" : "content",
    "colname2" : "content",
],  
...

и

{
"columns": [
    "column name 1", 
    "column name 2", 
], 
"rows": [
    [
        "content", 
        "content"
    ], 
    [
        "content", 
        "content"
    ]
    ...
]

}

Первый метод лучше, потому что с ним легче работать. Я просто должен преобразовать в объект после получения. Второму потребуется некоторая постобработка, чтобы преобразовать его в формат, более похожий на первый, чтобы с ним было легче работать в JavaScript.

Второй вариант лучше, поскольку он менее многословен, поэтому занимает меньше полосы пропускания и быстрее загружается. Перед сжатием обычно он составляет от 0,75% до 0,85% от размера первого формата.

Сжатие GZip усложняет ситуацию. Разница в размере файла ближе к 0,85% до 0,95%

В каком формате мне идти и почему?

Ответы [ 2 ]

2 голосов
/ 13 марта 2013

Я бы предложил использовать RJSON :

RJSON (Рекурсивный JSON) преобразует любой сбор данных JSON в более компактную рекурсивную форму. Сжатые данные по-прежнему в формате JSON и могут быть проанализированы с помощью JSON.parse. RJSON может сжимать не только однородные коллекции, но и любые наборы данных со свободной структурой.

Пример:

JSON:

{
"id": 7,
"tags": ["programming", "javascript"],
"users": [
    {"first": "Homer", "last": "Simpson"},
    {"first": "Hank", "last": "Hill"},
    {"first": "Peter", "last": "Griffin"}
],
"books": [
    {"title": "JavaScript", "author": "Flanagan", "year": 2006},
    {"title": "Cascading Style Sheets", "author": "Meyer", "year": 2004}
]
}

RJSON:

{
"id": 7,
"tags": ["programming", "javascript"],
"users": [
    {"first": "Homer", "last": "Simpson"},
    [2, "Hank", "Hill", "Peter", "Griffin"]
],
"books": [
    {"title": "JavaScript", "author": "Flanagan", "year": 2006},
    [3, "Cascading Style Sheets", "Meyer", 2004]
]
}
0 голосов
/ 24 июня 2011

Разве второй бит примера 1 не должен быть "rowname1" ... и т. Д.? На самом деле я не понимаю пример 2, поэтому, я думаю, я бы нацелил вас на 1. Можно много чего сказать о том, что данные могут быть немедленно обработаны без предварительной предварительной обработки. Обоснование: однажды я потратил слишком много времени на оптимизацию системы массивов, которая, как оказалось, отлично работала, но теперь чертовски сложно ее обновить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...