Нет. HTTP - протокол байтового потока (*); все, что идет вниз, должно быть упаковано в байты. Вы можете, конечно, использовать более компактное упакованное двоичное представление значений, но ваш PHP будет гораздо больше работать для кодирования, а ваш JS - для декодирования.
Во всяком случае, для обычного случая малых чисел текстовые представления имеют тенденцию быть очень эффективными. Ваш пример 1.2345
на самом деле меньше строки (6 байт), чем число с плавающей запятой двойной точности (8 байт).
JSON был придуман именно для того, чтобы можно было передавать нестроковые типы через HTTP-соединение. Это так легко, как вы собираетесь получить. Есть ли веская причина для беспокойства, что между PHP float
и JavaScript Number
?
был шаг serialise-> string-> parse
(* представлен JavaScript как символьный протокол, поскольку JS не имеет байтового типа данных. Установив кодировку ответа JSON в iso-8859-1
, вы можете заставить его работать так, как если бы это были чистые байты, но по умолчанию utf-8
обычно больше подходит.)