Jestem nowy w Pythonie i bawię się danymi JSON. Chciałbym dynamicznie budować obiekt JSON, dodając pewną wartość klucza do istniejącego obiektu JSON.
Próbowałem następujące, ale otrzymuję TypeError: 'str' object does not support item assignment
:
import json
json_data = json.dumps({})
json_data["key"] = "value"
print 'JSON: ', json_data
json_data['key'] = 'value'
, co nie będzie działać, ponieważjson_data
nie jest słownikiem w języku Python.pip list
daje te same informacje i może wysyłać JSON:pip list --format=json
Możesz utworzyć słownik Pythona i serializować go do JSON w jednym wierszu i nie jest to nawet brzydkie.
źródło
Jest już dostępne rozwiązanie, które pozwala zbudować słownik (lub zagnieżdżony słownik dla bardziej złożonych danych), ale jeśli chcesz zbudować obiekt, być może spróbuj „ObjDict”. Daje to znacznie większą kontrolę nad tworzonym Jsonem, na przykład zachowuje porządek i pozwala budować jako obiekt, który może być preferowaną reprezentacją twojej koncepcji.
najpierw zainstaluj objdict pip.
źródło
json.dumps
tjjson.dumps(response, sort_keys=True, indent=4)
, ale potem utkniesz w kolejności alfabetycznej, a nie preferowany zamawiania, grupowanie i reprezentacjaMożesz użyć
EasyDict
biblioteki ( doc ) :[ Instalacja ]:
pip install easydict
źródło
Wszystkie poprzednie odpowiedzi są poprawne, oto jeszcze jeden i łatwy sposób, aby to zrobić. Na przykład utwórz strukturę danych Dict, aby serializować i deserializować obiekt
( Zauważ, że w Pythonie Żaden nie ma wartości Null i celowo używam tego, aby zademonstrować, jak możesz przechowywać wartość NULL i przekonwertować ją na Json NULL)
źródło