如何用紧凑且灵活的单字符串格式在两系统间传输扁平键值对?
问题:兼顾灵活性与低字节数的扁平键值对传输方案?
我有两个系统System A和System B,System A需要向System B发送复杂的扁平键值对数据。但System B是基础系统,仅能接收单个最长32KB的字符串,仅支持分割、截取、修剪等基本字符串操作,但可以存储用于数据解析的基础信息。
核心目标:找到既灵活又能最小化传输字节数的解决方案
示例数据(用JSON简化展示):
{ "run": "T1021", "program": "02", "voltage": 12, "customer": "Cronus" }
注意:数据结构不固定,会随运行任务新增字段。
已评估的方案
JSON
JSON是第一选择,它灵活且能准确表达数据,但System B没有JSON解析库,只能靠基本字符串操作解析,实现成本高。
固定位置拼接字符串
另一种极端方案是把所有值直接拼接成单个字符串,通过预存的位置规则确定对应字段。
比如示例数据可拼接为T10210212Cronus--------------,System B需要存储如下解析规则表:
| 字段编号 | 长度 | 起始位置 | 字段名称 |
|---|---|---|---|
| 1 | 5 | 1 | run |
| 2 | 2 | 8 | program |
| 3 | 2 | 10 | voltage |
| 4 | 20 | 13 | customer |
通过这个规则表可以提取对应值,该方案字节数非常紧凑,但完全没有灵活性——新增或修改字段必须同步更新规则表,无法适配动态结构。
基础分隔符键值对
作为折中方案,我考虑用分隔符分割键值对。因为数据是扁平结构,不需要JSON的嵌套特性。
比如示例数据可表示为run:T1021 program:02 voltage:12 customer:Cronus,System B先按空格分割得到单个键值对,再按冒号拆分键和值。
该方案和JSON一样灵活,且比JSON减少了冗余字符,但远不如固定拼接紧凑,而且每次传输都重复发送键名,存在字节浪费。
提问
是否存在其他编码方式,既能保持对动态字段的灵活性,又能进一步减少传输字节数?
内容的提问来源于stack exchange,提问作者Nicholas Jackson
相关产品推荐
相关产品推荐

