Json boolean vs integer - занимает меньше места?

При отправке значения в JSON отв, лучше ли использовать логическое или целое число, чтобы использовать меньше места?

например:

{
 foo: false
}

Или:

{
 foo: 0
}

Будет ли использование числа использовать меньше места, учитывая его просто число, по сравнению с 4 или 5 символами для логического значения? (Истина/ложь)

Также существует ли разница в скорости между двумя подходами, если вы конвертируете их из JSON в формат объекта?

1 ответ

Во-первых, это микро-оптимизация и очень маловероятна. Если вы перевозите тысячи или миллионы таких ценностей, это может стать значительным; но в этом случае вы, вероятно, захотите что-то гораздо более эффективное, чем JSON (простой CSV будет лучше во многих случаях, но в идеале вы будете использовать некоторый упакованный двоичный формат).

Во-вторых, JSON - это способ представления данных в строке; поэтому сохранение или отправка JSON означает, что вы храните или отправляете строки. Таким образом, измерение размера данных является тривиальным: как долго строка? Строка 0 имеет один символ; строка false имеет пять символов.

В-третьих, если вы оптимизируете пространство, вы удалите все незначительные пробелы, поэтому ваши примеры должны быть {"foo":false} (13 символов) и {"foo":0} (9 символов). Обратите внимание, что вы не можете, как у вас в вашем примере, пропустить отметки кавычек вокруг foo - это недействительно JSON.

В-четвертых, сколько памяти или других ресурсов, которые займет структура, когда вы конвертируете ее из JSON в объект, зависит от того, какой язык вы используете, какая реализация этого языка и любое количество других факторов, так что совершенно неопровержимо (и, опять же, микро-оптимизация, которая вряд ли будет очень важна).

licensed under cc by-sa 3.0 with attribution.