【问题标题】:Json.dump() does not have the expected outputJson.dump() 没有预期的输出
【发布时间】:2018-02-15 14:03:06
【问题描述】:

我在python中有一组结果,我想将它们转换成JSON文件,所以我使用json.dump(),如下:

with open('pass_blocked.json','w') as outPassBlocked:
        json.dump(pass_blocked_results,outPassBlocked, indent=4)

但是,创建的文件没有我期望的 JSON 格式。如何创建正确的 JSON 文件?我得到的是这样的:

[
    683, 
    {
        "nightly_result": null, 
        "current_result": "PASS", 
        "testrail_id": "12645"
    }, 
    2056, 
    {
        "nightly_result": null, 
        "current_result": "BLOCK", 
        "testrail_id": "13200"
    }, 
    1033, 
    {
        "nightly_result": null,  
        "current_result": "BLOCK", 
        "testrail_id": "9713"
    }, 
    1036, 
    {
        "nightly_result": null, 
        "current_result": "PASS", 
        "testrail_id": "1016748"
    }
]

有什么想法吗?

【问题讨论】:

  • 那个json好像没问题。你给出的输入是什么?你期待的格式是什么?我们需要更多细节来回答。
  • 您的预期 JSON 格式是什么?您发布的 JSON 是有效的 JSON。
  • 我需要得到类似:"683": { "nightly_result": null,...etc }
  • 你给函数的输入是什么?我认为问题在于您没有正确传递输入,否则就可以了
  • 大概pass_blocked_result 是一个列表,其元素在整数和字典之间交替。如果您想转储字典,请将pass_blocked_result 转换为字典。

标签: python json


【解决方案1】:

我坚持输入的错误(我在 cmets 中所说的)。但是,您可以尝试更改您为转储提供的输入,以按照您想要的方式重新制作列表。试试这样的。

with open('pass_blocked.json','w') as outPassBlocked:
    pass_blocked_results = list(map(lambda i: {pass_blocked_results[i]: pass_blocked_results[i+1]}, 
                                    range(0, len(pass_blocked_results), 2)))
    json.dump(pass_blocked_results,outPassBlocked, indent=4)

你还是应该看看你是如何创建你的列表的。

【讨论】:

    猜你喜欢
    • 2018-09-18
    • 2019-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-04
    相关资源
    最近更新 更多