をs
が適切な辞書である場合は、json
はjson
文字列を作成することができます
In [1194]: s={'kind': 1, 'topic': 'manufacturing_device', 'message_type': 1, 'txid': '6bcc6212a8', 'name': 'manufacturing'}
In [1195]: s
Out[1195]:
{'kind': 1,
'message_type': 1,
'name': 'manufacturing',
'topic': 'manufacturing_device',
'txid': '6bcc6212a8'}
In [1196]: astr = json.dumps(s)
In [1197]: astr
Out[1197]: '{"name": "manufacturing", "txid": "6bcc6212a8", "topic": "manufacturing_device", "message_type": 1, "kind": 1}'
注s
が辞書であることを。 astr
は文字列です。
コンプリートloads
との往復:
In [1205]: s1['topic']
Out[1205]: 'manufacturing_device'
(受け入れ答えに私のコメントに関連する編集)
:辞書の要素にアクセスする
In [1198]: s1 = json.loads(astr)
In [1199]: s1
Out[1199]:
{'kind': 1,
'message_type': 1,
'name': 'manufacturing',
'topic': 'manufacturing_device',
'txid': '6bcc6212a8'}
は単なる標準のPythonです
この式は、文字列を作成します。
一つ以上の
json.dumps
でそれをラップしてから
loads
または
eval
とアンラップする必要はありません
In [1216]: ne = ast.literal_eval(s)
In [1217]: ne
Out[1217]:
{'kind': 1,
'message_type': 1,
'name': 'manufacturing',
'topic': 'manufacturing_device',
'txid': '6bcc6212a8'}
:
In [1214]: s='{\'kind\': 1, \'topic\': \'manufacturing_device\', \'message_type\': 1, \'txid\': \'6bcc6212a8\', \'name\': \'manufacturing\'}'
In [1215]: s
Out[1215]: "{'kind': 1, 'topic': 'manufacturing_device', 'message_type': 1, 'txid': '6bcc6212a8', 'name': 'manufacturing'}"
それはliteral_eval
を評価し、辞書を作成することができ、有効なPython式、です。
's'はJSONではなく、この文は有効なPythonではありません。 [mcve]を作成してください。あなたの実際のコードが有効であるとすれば、 'jStr = json.dumps(s)'は 's'の文字列値のJSON表現を生成するので、' json.loads(jStr) 'はそれから同じ文字列をデコードしますあなたの後にある辞書の代わりにJSONを使用します。 –