Python如何解析NAD功放RS232回车分隔数据并生成对应JSON
NAD功放RS232返回数据转JSON实现方法
你现有代码有一处笔误:循环中用到的setting_list拼写错误,和你之前定义的settings_list差了一个s,先修正这个问题。
后续转换逻辑很简单,你只需要先把提取到的键值对行逐行拆分存入字典,再用Python内置的json模块把字典转成JSON格式即可,完整实现代码如下:
import re import json # 你实际获取的功放返回原始二进制数据 rs232_raw_data = b'\rMain.AutoSense=On\r\rMain.AutoStandby=Off\r\rMain.Balance=0\r\rMain.Bass=7\r\rMain.Brightness=1\r\rMain.Filters=Full Range\r\rMain.Model=C368\r\rMain.Mute=Off\r\rMain.PreoutSub=Subwoofer\r\rMain.Source=2\r\rMain.Sources=8\r\rMain.SpeakerA=On\r\rMain.SpeakerB=On\r\rMain.ToneDefeat=Off\r\rMain.Treble=6\r\rMain.Version=V1.69\r\rMain.Volume=-20.0\r\rMain.VolumeDisplayMode=Decibel\r' # 解码+提取所有键值对行 rs232_data = rs232_raw_data.decode('UTF-8') settings_list = re.findall('\r(.*?)\r', rs232_data) # 逐行拆分存入字典 settings_dict = {} for line in settings_list: # 只拆分第一个=,避免后续值中包含=时解析出错 key, val = line.split('=', maxsplit=1) settings_dict[key] = val # 转换为JSON字符串,indent参数用于格式化缩进,不需要紧凑格式可删除 output_json = json.dumps(settings_dict, ensure_ascii=False, indent=2) print(output_json)
运行后输出结果完全符合你的要求,如果需要直接输出紧凑无缩进的JSON,去掉indent=2参数即可。
内容的提问来源于stack exchange,提问作者user17487771
相关产品推荐
相关产品推荐

