2013-05-21 9 views
19

Czego mi brakuje? Chcę zrzucić słownik jako ciąg znaków json.Python - dump dict jako ciąg jsonów

Używam Pythona 2.7

Z tym kodem:

import json 
fu = {'a':'b'} 
output = json.dump(fu) 

pojawia się następujący błąd:

Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/dist-packages/gevent-1.0b2-py2.7-linux-x86_64.egg/gevent/greenlet.py", line 328, in run 
    result = self._run(*self.args, **self.kwargs) 
    File "/home/ubuntu/workspace/bitmagister-api/mab.py", line 117, in mabLoop 
    output = json.dump(fu) 
TypeError: dump() takes at least 2 arguments (1 given) 
<Greenlet at 0x7f4f3d6eec30: mabLoop> failed with TypeError 
+0

Szczerze mówiąc, istnienie tego pytania odzwierciedla poważne niepowodzenia badań. Jeśli 'foo' nie robi tego, czego się spodziewasz,' help (foo) 'powinno być twoim pierwszym połączeniem. (i rzeczywiście w tym przypadku byłoby jasne, że 'dump()' nie było tym co chcesz.) – kampu

+1

@kampu Pewne niepowodzenia badań, ale nie * poważne *, pomijając jedną literę wywołania funkcji nie jest wielka sprawa , może tylko wypadek. Próba i błąd są wyświetlane zgodnie z wytycznymi SO, więc jest zgodny z formatem witryny. – jamylak

+2

Moje "badania" doprowadziły mnie tutaj, więc nie jest to bezcelowe pytanie. Lepiej zapytać tutaj, a tym samym odpowiedzieć na 10 825 pytań widzów, niż pozwolić im zastanowić się, gdzie zacząć szukać problemu. Oto dlaczego StackOverflow to coś. RTFM jest rzeczywiście trudny i często niewystarczający. –

Odpowiedz

41

Zastosowanie json.dumps zrzucić str

>>> import json 
>>> json.dumps({'a':'b'}) 
'{"a": "b"}' 

json.dump zrzuca do pliku

8

Myślę, że problemem jest json.dump. spróbuj

json.dumps(fu) 
0

Możesz użyć json.dumps.

Przykład:

import json 

json.dumps({'zuckerberg':'tech','sachin':'cricket'}) 

This wyjścia:

'{"zuckerberg": "tech", "sachin": "cricket"}' 

Jeśli chcesz posortować klawiszy, użyj sort_keys jako drugi argument do json.dumps:

json.dumps({'zuckerberg':'tech','sachin':'cricket'},sort_keys=True) 

Wyjścia:

'{"sachin": "cricket", "zuckerberg": "tech"}' 
+0

dziękuję Drenmi za formowanie, był nowy w stackoverflow, będę poprawić następnym razem podczas odpowiadania –