如何将[{admin=custom}]类非标准对象数组转为标准JSON对象数组?
非标准键值对数组转标准JSON的实现方法
下面提供几种主流编程语言的实现方案,帮你把非标准格式的数组转换成符合规范的JSON对象数组:
Python 实现
方案1:字符串替换+正则修正
通过字符串替换和正则表达式快速修正格式,再用JSON库解析:
import json import re original_str = "[{admin=custom}, {aa@g.com=1}, {main@gmail.com=free}]" # 替换=为JSON格式的: formatted_str = original_str.replace("=", ": ") # 给键添加双引号:匹配{或,后的非等号字符 formatted_str = re.sub(r'([{,]\s*)([^\s=]+)', r'\1"\2"', formatted_str) # 给值添加双引号:匹配:后的非}字符 formatted_str = re.sub(r':\s*([^\s}]+)', r': "\1"', formatted_str) # 解析为JSON对象并输出标准格式 json_result = json.loads(formatted_str) print(json.dumps(json_result, indent=2))
方案2:逐元素拆分解析
手动拆分每个键值对元素,逐个构建字典:
import json original_str = "[{admin=custom}, {aa@g.com=1}, {main@gmail.com=free}]" # 拆分出每个键值对项 items = original_str.strip('[]').split('}, {') items = [item.strip('{}') for item in items] result = [] for item in items: key, value = item.split('=') result.append({key: value}) # 生成标准JSON print(json.dumps(result, indent=2))
JavaScript 实现
方案1:字符串正则处理
const originalStr = "[{admin=custom}, {aa@g.com=1}, {main@gmail.com=free}]"; let formattedStr = originalStr.replace(/=/g, ': '); // 给键加双引号 formattedStr = formattedStr.replace(/([{,]\s*)([^=]+)/g, '$1"$2"'); // 给值加双引号 formattedStr = formattedStr.replace(/:\s*([^}]+)/g, ': "$1"'); // 解析并输出标准JSON const jsonResult = JSON.parse(formattedStr); console.log(JSON.stringify(jsonResult, null, 2));
方案2:数组遍历构建
const originalStr = "[{admin=custom}, {aa@g.com=1}, {main@gmail.com=free}]"; // 拆分每个键值对元素 const items = originalStr.slice(1, -1).split('}, {').map(item => item.replace(/[{}]/g, '')); const result = items.map(item => { const [key, value] = item.split('='); return { [key]: value }; }); console.log(JSON.stringify(result, null, 2));
注意事项
- 如果原数据的键或值包含
=、{、}等特殊字符,需要调整正则或拆分逻辑,避免解析错误 - 标准JSON要求使用双引号包裹键和字符串值,上述方案均会输出符合该规范的结果
内容的提问来源于stack exchange,提问作者Pralayasimha Yedida
相关产品推荐
相关产品推荐

