我正在编写一个插件,将日志结果作为一个json文件返回给ansible playbook。在
我对python不是很熟悉,但我尝试了一些似乎有效的方法:
def json_log(res, host):
if type(res) == type(dict()):
if 'verbose_override' not in res:
host_json = JSONEncoder().encode({'host':host})
result_json = JSONEncoder().encode(res)
combined_json = host_json + result_json
combined_json = combined_json.replace("}{", ',')
print(combined_json)
host_json
将类似于:{"host": "centos65"}
result_json
可能是这样的:{"cmd": "echo \"Hello World\" ", "end": "2014-08-01 19:32:38.714584", "stdout": "Hello World", "changed": true, "start": "2014-08-01 19:32:38.707510", "delta": "0:00:00.007074", "stderr": "", "rc": 0, "invocation": {"module_name": "shell", "module_args": "echo \"Hello World\""}}
所以我选择了蛮力路径,将字符串组合起来并删除了}{
它得到了它们连接的地方,因此它将采用我想要的格式作为有效的json:
{"host": "centos65","cmd": "echo \"Hello World\" ", "end": "2014-08-01 19:32:38.714584", "stdout": "Hello World", "changed": true, "start": "2014-08-01 19:32:38.707510", "delta": "0:00:00.007074", "stderr": "", "rc": 0, "invocation": {"module_name": "shell", "module_args": "echo \"Hello World\""}}
所以现在我只是将这两个字符串混搭在一起,然后用逗号替换join,有没有更聪明的方法将它们与json开头的主机部分结合起来?在
由于这两个词典都是词典,因此可以用另一个词典更新其中一个词典。例如:
您可以用另一个dict的内容更新dict,唯一的问题是如果您有重复的键并且不希望覆盖这些值。在
相关问题 更多 >
编程相关推荐