漂亮的打印复杂的JSON输入

时间:2014-10-17 07:49:53

标签: python json command-line pretty-print

我经历过 How can I pretty-print JSON in (unix) shell script? 和“漂亮的打印JSON”上的其他Stackoverflow帖子,但它们只适用于简单的输入 等,

echo '{"foo": "lorem", "bar": "ipsum"}' | python -m json.tool

当我尝试做这样的事情时

echo '{"group" : {list : [1,2,3]}, "list" : ["a","b","c"]}' | python -m json.tool

失败了。

给我错误

Expecting property name enclosed in double quotes: line 1 column 13 (char 12)

PS:为什么我要尝试传递复杂的json输入?我正试图从here

解决问题1

编辑:感谢您及时回复。但是,如果我正在寻找像这样的输出呢 {

“团体”:{

“清单”:[1,2,3]

},

“list”:[“a”,“b”,“c”]

}

2 个答案:

答案 0 :(得分:1)

您的JSON输入无效;你需要引用第一个list键:

echo '{"group" : {"list" : [1,2,3]}, "list" : ["a","b","c"]}' | python -m json.tool
#                 ^^^^^^

只要您提供有效 JSON输入,该工具就可以处理任何复杂性的JSON。纠正错误后,Python输出:

$ echo '{"group" : {"list" : [1,2,3]}, "list" : ["a","b","c"]}' | python -m json.tool
{
    "group": {
        "list": [
            1,
            2,
            3
        ]
    },
    "list": [
        "a",
        "b",
        "c"
    ]
}

答案 1 :(得分:1)

在这一行:

"group" : {list : [1,2,3]}
你有无效的json。期望list是一个字符串,而不是。因此错误。改变:

"group" : {"list" : [1,2,3]}

将解决问题。