自学内容网 自学内容网

[json][ini]文件的相互转化

json转为ini

import json

# 将每个section的键值对转换回原始格式的函数
def convert_to_inf_format(section_data):
    inf_str = ""
    for section, values in section_data.items():
        inf_str += f"[{section}]\r\n"
        for key, value in values.items():
            if value == "true":
                print(key,value)
                inf_str += f"{key}=true\r\n"
            elif value == "false":
                inf_str += f"{key}=false\r\n"
                print(value)
            else:
                inf_str += f"{key}={value}\r\n"
    return inf_str.strip()

def postInf(data):
    # 遍历数据,恢复inf字段
    for item in data["data"]:
        # 删除inf字段
        if "sections" in item:
            item["inf"] = convert_to_inf_format(item["sections"])
        else:
            item["inf"] = item.pop("inf", "")  # 如果没有sections,则保持原样或清空
    try:
        for item in data["data"]:
            del item["sections"]
    except KeyError:
        print("已删除")
    # 打印修改后的JSON数据
    json_data = json.dumps(data["data"][0], ensure_ascii=False, indent=4)
    # 将 True 替换为 true
    json_data.replace('True', 'true')
    return json_data
import json

def parse_inf(inf_string):
    configs = {}
    current_section = None

    # Split the string into lines
    lines = inf_string.strip().split("\r\n")

    # Parse each line
    for line in lines:
        if "[" in line:
            current_section = line.strip("[]")
            configs[current_section] = {}
        elif "=" in line:
            key, value = line.strip().split("=", 1)
            if current_section:
                configs[current_section][key] = value
    return configs

def getInf(data):

    # Process each item in the "data" list
    for item in data["data"]:
        inf_string = item["inf"]
    parsed_configs = parse_inf(inf_string)
    item["sections"] = parsed_configs

    # Remove the original "inf" field
    for item in data["data"]:
        del item["inf"]
    return json.dumps(data, ensure_ascii=False, indent=4)

ini转为json

import json

def parse_inf(inf_string):
    configs = {}
    current_section = None

    # Split the string into lines
    lines = inf_string.strip().split("\r\n")

    # Parse each line
    for line in lines:
        if "[" in line:
            current_section = line.strip("[]")
            configs[current_section] = {}
        elif "=" in line:
            key, value = line.strip().split("=", 1)
            if current_section:
                configs[current_section][key] = value
    return configs

def getInf(data):

    # Process each item in the "data" list
    for item in data["data"]:
        inf_string = item["inf"]
    parsed_configs = parse_inf(inf_string)
    item["sections"] = parsed_configs

    # Remove the original "inf" field
    for item in data["data"]:
        del item["inf"]
    return json.dumps(data, ensure_ascii=False, indent=4)

原文地址:https://blog.csdn.net/qq_43496409/article/details/142980110

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!