Хруст JSON с питоном - PullRequest
9 голосов
/ 24 июня 2009

Повторяя мой другой вопрос , теперь нужно найти способ сократить 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?

EDIT Спасибо вам, drdaeman и Eli Courtwright за супер быстрый ответ!

Ответы [ 2 ]

17 голосов
/ 24 июня 2009

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 голос
/ 24 июня 2009

В Python 2.6:

import json
print json.loads( json_string )

Обычно, когда вы используете модуль json для анализа json, вы получаете Python dict. Если вы просто напечатаете dict и / или преобразуете его в строку, все это будет в одной строке. Конечно, в некоторых случаях Python dict будет немного отличаться от строки, закодированной в json (например, с булевыми и нулевыми значениями), поэтому, если это имеет значение, вы можете сказать

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

Если у вас нет Python 2.6, вы можете использовать модуль simplejson . В этом случае вы просто скажете

import simplejson
print simplejson.loads( json_string )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...