修改数据结构

This commit is contained in:
2025-09-28 21:45:02 +08:00
parent 0ee24252ac
commit 657365f9de
4 changed files with 207 additions and 82 deletions

100
json_converter.py Normal file
View File

@@ -0,0 +1,100 @@
import json
def json_to_string(json_data):
"""
将JSON数据转换为使用指定分隔符的字符串
使用 |###| 作为键值对分隔符
使用 |##| 作为列表元素分隔符
Args:
json_data (dict): 要转换的JSON数据
Returns:
str: 转换后的字符串
"""
if not isinstance(json_data, dict):
raise ValueError("输入必须是字典类型")
result_parts = []
for key, value in json_data.items():
if isinstance(value, list):
# 处理列表:使用 |##| 分隔列表元素
list_str = "|##|".join(str(item) for item in value)
result_parts.append(f"{key}:[{list_str}]")
else:
# 处理普通值
result_parts.append(f"{key}:{value}")
# 使用 |###| 分隔键值对
return "|###|".join(result_parts)
def string_to_json(data_string):
"""
将使用指定分隔符的字符串转换回JSON格式
解析使用 |###| 分隔的键值对
解析使用 |##| 分隔的列表元素
Args:
data_string (str): 要转换的字符串
Returns:
dict: 转换后的JSON数据
"""
if not isinstance(data_string, str):
raise ValueError("输入必须是字符串类型")
if not data_string.strip():
return {}
result = {}
# 使用 |###| 分割键值对
pairs = data_string.split("|###|")
for pair in pairs:
if ":" not in pair:
continue
# 分割键和值
key, value = pair.split(":", 1)
key = key.strip()
value = value.strip()
# 检查是否是列表格式 [...]
if value.startswith("[") and value.endswith("]"):
# 处理列表
list_content = value[1:-1] # 去掉方括号
if list_content:
# 使用 |##| 分割列表元素
items = list_content.split("|##|")
# 尝试转换为适当的数据类型
converted_items = []
for item in items:
item = item.strip()
# 尝试转换为数字
try:
if "." in item:
converted_items.append(float(item))
else:
converted_items.append(int(item))
except ValueError:
# 如果不是数字,保持为字符串
converted_items.append(item)
result[key] = converted_items
else:
result[key] = []
else:
# 处理普通值,尝试转换为适当的数据类型
try:
if "." in value:
result[key] = float(value)
else:
result[key] = int(value)
except ValueError:
# 如果不是数字,保持为字符串
result[key] = value
return result