当前位置: 首页 > article >正文

[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)

http://www.kler.cn/news/357612.html

相关文章:

  • 常见的Java面试题
  • C++ 20 Concept
  • GPTs及Assistant API快速开发AI应用实战
  • android:launchMode=“singleInstancePerTask“
  • 自动化测试数据:如何正确地选择不同格式文件「详细介绍」?
  • error: cannot find symbol import android.os.SystemProperties;
  • C#学习笔记(六)
  • 如何精准设置线程数,提升系统性能的秘密武器!
  • JMeter如何设置HTTP代理服务器?
  • aspose.cells快速入门
  • Kafka、Zookeeper、Redis、MySQL和Elasticsearch(ES)鉴权配置
  • Leetcode 1926. 迷宫中离入口最近的出口
  • 详细分析 Spring CORS 配置 (附Demo)
  • 5 首页框架及路由配置
  • 二叉树算法之字典树(Trie)详细解读
  • Go 项目如何集成类似mybatisPlus插件呢?GORM走起!!
  • vscode配置ssh远程连接服务器
  • 货币兑换计算器(RMB <=> 美元)
  • 炒股VS炒游戏装备,哪个更好做
  • 有关 C#多表查询学习