You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 04:24:06