修改数据结构
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