回答:
オブジェクトをJSON文字列にエンコードする前に作成します。
import json
data = {}
data['key'] = 'value'
json_data = json.dumps(data)
JSONはシリアル化形式であり、構造を表すテキストデータです。それ自体は、その構造ではありません。
json_data['key'] = 'value'
たjson_data
が、はPython辞書ではないため機能しません。
pip list
同じ情報を提供し、JSONを出力できます:pip list --format=json
Pythonディクショナリを作成してJSONに1行でシリアル化できます。醜くもありません。
my_json_string = json.dumps({'key1': val1, 'key2': val2})
辞書(またはより複雑なデータのネストされた辞書)を構築できるソリューションがすでに提供されていますが、オブジェクトを構築する場合は、 'ObjDict'を試してください。これにより、作成されるjsonをより詳細に制御できます(例えば、順序の保持など)。概念の優先表現となるオブジェクトとして構築することができます。
最初にobjdictをインストールします。
from objdict import ObjDict
data = ObjDict()
data.key = 'value'
json_data = data.dumps()
json.dumps
ieを呼び出すときにアルファベット順で並べ替えることはできますがjson.dumps(response, sort_keys=True, indent=4)
、優先順、グループ化、および表現ではなく、アルファベット順のままです
EasyDict
ライブラリ(doc)を使うことができます:EasyDictを使用すると、dict値に属性としてアクセスできます(再帰的に機能します)。Python dictのJavascriptのようなプロパティのドット表記。
使用法
>>> from easydict import EasyDict as edict >>> d = edict({'foo':3, 'bar':{'x':1, 'y':2}}) >>> d.foo 3 >>> d.bar.x 1 >>> d = edict(foo=3) >>> d.foo 3
[ インストール ]:
pip install easydict
以前の答えはすべて正解です。これを行う簡単な方法がもう1つあります。たとえば、オブジェクトをシリアル化および逆シリアル化するためのDictデータ構造を作成します。
(PythonではNoneはNullであり、これを意図的に使用してnullを格納し、json nullに変換する方法を示すことに注意してください)
import json
print('serialization')
myDictObj = { "name":"John", "age":30, "car":None }
##convert object to json
serialized= json.dumps(myDictObj, sort_keys=True, indent=3)
print(serialized)
## now we are gonna convert json to object
deserialization=json.loads(serialized)
print(deserialization)