2009-06-24 3 views
9

Повторяя мой other question, теперь нужно найти способ хрустить json до одной строки: например.Хруст json с python

{"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 за супер быстрый ответ!

+1

Версия Python, которую вы используете, здесь несколько важна. json был частью стандартной библиотеки с тех пор (я думаю) 2.6 – Triptych

+0

Использование python 2.6, поэтому предлагаемое решение работало для меня отлично –

ответ

16

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"}}}' 
+3

О, я почти забыл об этом ... Вы должны использовать '(',', ': ') 'как аргумент' separators' для json.dumps (см. документацию). Это сделает данные еще более компактными. – drdaeman

1

В Python 2.6:

import json 
print json.loads(json_string) 

В основном, когда вы используете модуль JSON для разбора JSON, то вы получите Python Dict. Если вы просто напечатаете dict и/или преобразуете его в строку, все будет в одной строке. Конечно, в некоторых случаях ДИКТ Python будет немного отличаться от JSon закодированных строк (например, с булевыми и нулямом), так что, если это имеет значение, то вы можете сказать

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

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

import simplejson 
print simplejson.loads(json_string) 
+3

Просто print'ing json.loads будет печатать представление данных на Python, а не JSON-закодированное. – drdaeman

Смежные вопросы