技术求助:删除双引号转JSON对象用于绘图,多种方法尝试未果
嘿,我来帮你搞定这个转JSON的问题!要把带多余双引号的内容转成绘图能用的合法JSON,得先看你的原始数据是什么情况,但我给你几个通用的解决方案,基本能覆盖大部分场景:
方法一:用Python预处理数据(适合后端/数据分析场景)
如果你的原始内容是首尾带多余双引号的JSON字符串,或者是中间夹杂不必要双引号的文本,都可以用Python快速处理:
场景1:首尾多了一层双引号的JSON
比如你的原始数据是这样的:
"{"title": "月度销量", "data": [120, 180, 240]}"
处理代码:
import json # 原始带多余双引号的字符串 raw_data = '"{"title": "月度销量", "data": [120, 180, 240]}"' # 先去掉首尾的双引号 clean_str = raw_data.strip('"') # 解析成合法的JSON对象 json_obj = json.loads(clean_str) print(json_obj) # 输出:{'title': '月度销量', 'data': [120, 180, 240]}
场景2:文本里全是多余双引号,需要转成键值对JSON
比如原始数据是:
"产品A" "50", "产品B" "80", "产品C" "120"
处理代码:
import json raw_text = '"产品A" "50", "产品B" "80", "产品C" "120"' # 先去掉所有双引号 clean_text = raw_text.replace('"', '') # 分割成每个条目 items = clean_text.split(', ') # 构建JSON对象 result = {} for item in items: name, num = item.split(' ') result[name] = int(num) print(json.dumps(result)) # 输出:{"产品A":50,"产品B":80,"产品C":120}
方法二:用JavaScript处理(适合前端绘图,比如Chart.js/D3.js)
如果是在前端拿到带问题的字符串,直接用JS处理更方便:
场景1:首尾多双引号的JSON字符串
// 原始数据 const rawStr = '"{"xAxis": ["周一","周二","周三"], "yData": [30, 45, 28]}"'; // 移除首尾的双引号 const cleanStr = rawStr.slice(1, -1); // 解析成JSON对象 const chartData = JSON.parse(cleanStr); console.log(chartData); // 输出:{xAxis: ["周一","周二","周三"], yData: [30,45,28]}
场景2:处理混合多余双引号的文本
const rawText = '"Q1": "150", "Q2": "200", "Q3": "180"'; // 全局替换所有双引号 const cleanText = rawText.replace(/"/g, ''); // 分割成键值对 const pairs = cleanText.split(', '); const chartData = {}; pairs.forEach(pair => { const [key, value] = pair.split(': '); chartData[key] = parseInt(value); }); console.log(chartData); // 输出:{Q1: 150, Q2: 200, Q3: 180}
注意事项
如果你的数据是合法JSON但双引号未转义(比如本该是\"却写成了"),那得先修复转义问题再解析:
# 示例:未转义的双引号导致格式错误 raw_str = '{"name": "张三 "大锤"", "score": 90}' # 修复中间未转义的双引号 fixed_str = raw_str.replace('"', '\\"').replace('\\"{', '"{').replace('}"\\', '}"') json_obj = json.loads(fixed_str) print(json_obj) # 输出:{'name': '张三 "大锤"', 'score': 90}
内容的提问来源于stack exchange,提问作者Cherry
相关产品推荐
相关产品推荐

