修改数据结构
This commit is contained in:
100
json_converter.py
Normal file
100
json_converter.py
Normal 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
|
||||
Reference in New Issue
Block a user