Python解析Socket接收的JSON数据遇JSONDecodeError求助
解决JSONDecodeError:处理带前缀的Socket数据
问题根源
你收到的字符串包含非JSON格式的前缀device json string:,而json.loads()仅能解析纯JSON结构的内容,这直接导致了解析失败。
解决方案
方法1:单次分割提取JSON部分
通过字符串分割只剥离前缀一次,避免误切割JSON内容里的相似字符串:
import json data_str = data.decode() # 按前缀分割,取分割后的最后一段(即JSON部分) json_content = data_str.split("device json string:", 1)[-1].strip() js = json.loads(json_content)
strip()用于去除JSON内容前后可能存在的空格、换行符等干扰字符。
方法2:固定前缀长度切片
如果前缀内容固定不变,可直接通过索引截取后续内容:
import json prefix = "device json string:" data_str = data.decode() # 跳过前缀长度的字符,截取剩余部分 json_content = data_str[len(prefix):].strip() js = json.loads(json_content)
验证步骤
解析前可以先打印json_content,确认输出是标准的JSON格式字符串后,再执行json.loads()操作,确保解析成功。
内容的提问来源于stack exchange,提问作者Deww
相关产品推荐
相关产品推荐

