Javascript 是否有任何库可以为JSON数据生成元组和重构字符串?

Javascript 是否有任何库可以为JSON数据生成元组和重构字符串?,javascript,python,json,Javascript,Python,Json,我想问一下,是否有一个库可以拆分JSON字符串的“列”和“数据” 目标: 我需要减少在我们开发的遥测系统中传输的数据量 在引擎盖下,字符串化的json数据被交换。如果我能够将“列”和“数据”分成不同的部分,我只会交换一次“列”,那么“数据”占用的带宽就会少得多: orig_data = {"hello": 1, "how_are_you": "good"} template = "{\"hello\": %d, \"how_are_you\": \"%s\"}" data = (1, "good

我想问一下,是否有一个库可以拆分JSON字符串的“列”和“数据”

目标:

我需要减少在我们开发的遥测系统中传输的数据量

在引擎盖下,字符串化的json数据被交换。如果我能够将“列”和“数据”分成不同的部分,我只会交换一次“列”,那么“数据”占用的带宽就会少得多:

orig_data = {"hello": 1, "how_are_you": "good"}
template = "{\"hello\": %d, \"how_are_you\": \"%s\"}"
data = (1, "good")

reconstructed_data = json.loads(template % data) 
模板
将只交换一次,然后
数据
将更有效地发送

数字输入/输出交换中会显示一个更有效的示例:

orig_data = {"heater_1_started": True, "heater_2_started": False, ..., "heater_76_started": False, "motor_1_running": False, ...}
将成为

data = [0x0345]
那么,是否有任何库可以获取JSON数据并根据这些信息生成
模板

编辑 最后,我想要一个自适应协议:

protocol_signature = crc32(template)
if protocol_signature not in synchronized_protocol_signatures: 
    send({'protocol': [protocol_signature, template]})
send([protocol_signature, data])

如果字段总是按相同的顺序发送,则可以使用。使用列名创建一个
namedtuple
,然后发送数据值并实例化
namedtuple
类的副本

from collections import namedtuple
import json

# Initial column names (send only once)
column_names = ['x', 'y', 'z']

MyData = namedtuple('MyData', column_names)

json_string_from_server = '[True, 1, "good"]'
json_data = json.loads(json_string_from_server)

data = MyData(*json_data)

print data.x, data.y, data.z
# True 1 "good"
至于压缩发送的数据,这取决于您发送的数据类型。如果主要是任意长度的字符串和整数,那么经过字符串化的json可能已经被尽可能地压缩了

如果您希望压缩成单个位的主要是开/关布尔标志,则可以使用类似的库


你必须使用Json吗?谷歌用协议缓冲区解决了这类问题(使用模板最小化数据传输,二进制编码,支持Python),协议缓冲区项目正是我需要实现的,但他们说他们正处于测试阶段(即使是在v3.x.x阶段…)。此外,我需要考虑我们当前系统的向后兼容性。
>>> from bitarray import bitarray
>>> a = bitarray()            # create empty bitarray
>>> a.append(True)
>>> a.extend([False, True, True])
>>> a
bitarray('1011')