101 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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
 |