将json文件转换为toml文件

问题描述

我正在尝试使用 python 模块 JSONToml 文件转换为 toml 文件,但由于某种未知原因,该模块似乎跳过了一些重要的键/值对我来说。有谁知道是什么问题?

JSON 文件:

{"amqp_url": "amqps://fedora:@rabbitmq.fedoraproject.org/%2Fpublic_pubsub","callback": "fedora_messaging.example:printer","tls": {"ca_cert": "/etc/fedora-messaging/cacert.pem","keyfile": "/etc/fedora-messaging/fedora-key.pem","certfile": "/etc/fedora-messaging/fedora-cert.pem"},"client_properties": {"app": "Example Application","app_url": "https://github.com/fedora-infra/fedora-messaging","app_contacts_email": ["[email protected]"]},"exchanges": {"amq.topic": {"type": "topic","durable": true,"auto_delete": false,"arguments": {}}},"queues": {"00000000-0000-0000-0000-000000000000": {"durable": false,"auto_delete": true,"exclusive": true,"bindings": [{"queue": "00000000-0000-0000-0000-000000000000","exchange": "amq.topic","routing_keys": ["#"]}],"consumer_config": {"example_key": "for my consumer"},"qos": {"prefetch_size": 0,"prefetch_count": 25},"log_config": {"version": 1,"disable_existing_loggers": true,"formatters": {"simple": {"format": "[%(levelname)s %(name)s] %(message)s"}},"handlers": {"console": {"class": "logging.StreamHandler","formatter": "simple","stream": "ext://sys.stdout"}},"loggers": {"fedora_messaging": {"level": "INFO","propagate": false,"handlers": ["console"]},"twisted": {"level": "INFO","pika": {"level": "WARNING","handlers": ["console"]}},"root": {"level": "ERROR","handlers": ["console"]}}}

预期文件:

amqp_url = "amqps://fedora:@rabbitmq.fedoraproject.org/%2Fpublic_pubsub" 
callback = "fedora_messaging.example:printer"

[tls]
ca_cert = "/etc/fedora-messaging/cacert.pem"
keyfile = "/etc/fedora-messaging/fedora-key.pem"
certfile = "/etc/fedora-messaging/fedora-cert.pem"

[client_properties]
app = "Example Application"

app_url = "https://github.com/fedora-infra/fedora-messaging"

app_contacts_email = ["[email protected]"]

[exchanges."amq.topic"]
type = "topic"
durable = true
auto_delete = false
arguments = {}

[queues.00000000-0000-0000-0000-000000000000]
durable = false
auto_delete = true
exclusive = true
arguments = {}

[[bindings]]
queue = "00000000-0000-0000-0000-000000000000"
exchange = "amq.topic"
routing_keys = ["#"]

[consumer_config]
example_key = "for my consumer"

[qos]
prefetch_size = 0
prefetch_count = 25

[log_config]
version = 1
disable_existing_loggers = true

[log_config.formatters.simple]
format = "[%(levelname)s %(name)s] %(message)s"

[log_config.handlers.console]
class = "logging.StreamHandler"
formatter = "simple"
stream = "ext://sys.stdout"

[log_config.loggers.fedora_messaging]
level = "INFO"
propagate = false
handlers = ["console"]

[log_config.loggers.twisted]
level = "INFO"
propagate = false
handlers = ["console"]

[log_config.loggers.pika]
level = "WARNING"
propagate = false
handlers = ["console"]

[log_config.root]
level = "ERROR"
handlers = ["console"]

转载文件:

amqp_url = "amqps://fedora:@rabbitmq.fedoraproject.org/%2Fpublic_pubsub"
callback = "fedora_messaging.example:printer"
[[bindings]]
queue = "00000000-0000-0000-0000-000000000000"
exchange = "amq.topic"
routing_keys = [ "#",]

[tls]
ca_cert = "/etc/fedora-messaging/cacert.pem"
keyfile = "/etc/fedora-messaging/fedora-key.pem"
certfile = "/etc/fedora-messaging/fedora-cert.pem"

[client_properties]
app = "Example Application"
app_url = "https://github.com/fedora-infra/fedora-messaging"
app_contacts_email = [ "[email protected]",]

[consumer_config]
example_key = "for my consumer"

[qos]
prefetch_size = 0
prefetch_count = 25

[log_config]
version = 1
disable_existing_loggers = true

[exchanges."amq.topic"]
type = "topic"
durable = true
auto_delete = false

[queues.00000000-0000-0000-0000-000000000000]
durable = false
auto_delete = true
exclusive = true

[log_config.root]
level = "ERROR"
handlers = [ "console",]

[exchanges."amq.topic".arguments]

[queues.00000000-0000-0000-0000-000000000000.arguments]

[log_config.formatters.simple]
format = "[%(levelname)s %(name)s] %(message)s"

[log_config.handlers.console]
class = "logging.StreamHandler"
formatter = "simple"
stream = "ext://sys.stdout"

[log_config.loggers.fedora_messaging]
level = "INFO"
propagate = false
handlers = [ "console",]

[log_config.loggers.twisted]
level = "INFO"
propagate = false
handlers = [ "console",]

[log_config.loggers.pika]
level = "WARNING"
propagate = false
handlers = [ "console",]

例如,复制的文件跳过了大部分空键/值对:arguments = {}

这是我的代码:

import toml
import json

with open("config.json") as source:
    config = json.loads(source.read())

with open("conf1.toml","w") as f:
    f.write(toml.dumps(config))

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)