首页 > 解决方案 > 如何使用 python one-liner 从 bash 中的 json 文件中获取嵌套键的值?

问题描述

我正在尝试使用 python one-liner 从 bash 中的 json 文件中获取嵌套键的值。下面给出的是我的 json 文件内容。

{
    "conditional_ks": {
     "saturday":["reportdata_by_type"],
     "sunday":["rt_report","metadata"]
    }
}

我想要所有值 ["reportdata_by_type","rt_report","metadata"] 作为列表。我喜欢,

[root@testnode1 repair]# python -c "import json; print json.load(open('repair.json','r'))[\"conditional_ks\"].values()"

output: [[u'rt_report', u'metadata'], [u'reportdata_by_type']]

但我需要像 ['rt_report','metadata','reportdata_by_type'] 这样的输出

注意: repair.json 是 json 文件名。

一种选择是使用conditional_ks.*[]which 应该给出如下输出:

 ["reportdata_by_type", "rt_report", "metadata" ]

但是在bash中我无法使用它。

任何人都可以解决这个问题,请帮助。

标签: pythonjsonbashshellparsing

解决方案


python -c "import json; import itertools; print(list(itertools.chain(*(json.load(open(\"repair.json\", 'r'))[\"conditional_ks\"].values()))))"

我已经在我的计算机中测试了代码,它可以正常工作。愿这会有所帮助。


推荐阅读