I am trying to convert JSON
file to Toml
file using python module toml
but it looks like for some unknown reason the module skips over some of the key/value that is important to me. Does anyone know what is the problem?
JSON file:
{"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": ["jcline@fedoraproject.org"]}, "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, "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", "propagate": false, "handlers": ["console"]}, "pika": {"level": "WARNING", "propagate": false, "handlers": ["console"]}}, "root": {"level": "ERROR", "handlers": ["console"]}}}
Expected file:
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 = ["jcline@fedoraproject.org"][exchanges."amq.topic"]type = "topic"durable = trueauto_delete = falsearguments = {}[queues.00000000-0000-0000-0000-000000000000]durable = falseauto_delete = trueexclusive = truearguments = {}[[bindings]]queue = "00000000-0000-0000-0000-000000000000"exchange = "amq.topic"routing_keys = ["#"][consumer_config]example_key = "for my consumer"[qos]prefetch_size = 0prefetch_count = 25[log_config]version = 1disable_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 = falsehandlers = ["console"][log_config.loggers.twisted]level = "INFO"propagate = falsehandlers = ["console"][log_config.loggers.pika]level = "WARNING"propagate = falsehandlers = ["console"][log_config.root]level = "ERROR"handlers = ["console"]
Reproduced file:
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 = [ "jcline@fedoraproject.org",][consumer_config]example_key = "for my consumer"[qos]prefetch_size = 0prefetch_count = 25[log_config]version = 1disable_existing_loggers = true[exchanges."amq.topic"]type = "topic"durable = trueauto_delete = false[queues.00000000-0000-0000-0000-000000000000]durable = falseauto_delete = trueexclusive = 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 = falsehandlers = [ "console",][log_config.loggers.twisted]level = "INFO"propagate = falsehandlers = [ "console",][log_config.loggers.pika]level = "WARNING"propagate = falsehandlers = [ "console",]
The reproduced file skips for example most of the empty key/value pairs: arguments = {}
Here is my code:
import tomlimport jsonwith open("config.json") as source: config = json.loads(source.read())with open("conf1.toml", "w") as f: f.write(toml.dumps(config))