用python碾压json

时间:2009-06-24 17:47:59

标签: python json parsing

回应我的other question现在需要找到一种方法将json压缩到一行:例如

{"node0":{
    "node1":{
        "attr0":"foo",
        "attr1":"foo bar",
        "attr2":"value with        long        spaces"
    }
}}

想要紧缩到一条线:

{"node0":{"node1":{"attr0":"foo","attr1":"foo bar","attr2":"value with        long        spaces"}}}

删除无效的空格并保留值内的空格。有没有一个库在python中执行此操作?

修改的 感谢drdaeman和Eli Courtwright的快速反应!

2 个答案:

答案 0 :(得分:17)

http://docs.python.org/library/json.html

>>> import json
>>> json.dumps(json.loads("""
... {"node0":{
...     "node1":{
...         "attr0":"foo",
...         "attr1":"foo bar",
...         "attr2":"value with        long        spaces"
...     }
... }}
... """))
'{"node0": {"node1": {"attr2": "value with        long        spaces", "attr0": "foo", "attr1": "foo bar"}}}'

答案 1 :(得分:1)

在Python 2.6中:

import json
print json.loads( json_string )

基本上,当你使用json模块解析json时,你会得到一个Python dict。如果您只是打印一个字典和/或将其转换为字符串,它们都将在一行上。当然,在某些情况下,Python dict将与json编码的字符串略有不同(例如booleans和nulls),所以如果这很重要,那么你可以说

import json
print json.dumps( json.loads(json_string) )

如果您没有Python 2.6,那么您可以使用the simplejson module。在这种情况下,你只需说

import simplejson
print simplejson.loads( json_string )