Попытка извлечь некоторые поля из возвращенного JSON:
Event [{'subscriptionId': ['72059810266873859'], 'imdata': [{'fvAEPg': {'attributes': {'annotation': '', 'childAction': '', 'configIssues': '', 'configSt': 'applied', 'descr': '', 'dn': 'uni/tn-Student1/ap-AP_SD1/epg-er34', 'exceptionTag': '', 'extMngdBy': '', 'floodOnEncap': 'disabled', 'fwdCtrl': '', 'hasMcastSource': 'no', 'isAttrBasedEPg': 'no', 'isSharedSrvMsiteEPg': 'no', 'lcOwn': 'local', 'matchT': 'AtleastOne', 'modTs': '2020-05-01T22:31:30.293+01:00', 'monPolDn': 'uni/tn-common/monepg-default', 'name': 'er34', 'nameAlias': '', 'pcEnfPref': 'unenforced', 'pcTag': 'any', 'prefGrMemb': 'exclude', 'prio': 'unspecified', 'rn': '', 'scope': '3047425', 'shutdown': 'no', 'status': 'created', 'triggerSt': 'not_triggerable', 'txId': '6341068275364643083', 'uid': '15374'}}}]}]
, используя эту функцию, получая json и используя pyjq:
def printws():
while True:
message = pyjq.all((ws.recv()))
print("Event", message)
wbxt_api.messages.create(room_id, text=(message[0].imdata))
, сообщение печатается как указано выше, но я собираюсь получить только некоторые поля и получить эту ошибку:
Traceback (most recent call last):
File "/usr/lib64/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib64/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "aci_teste_new161.py", line 180, in printws
wbxt_api.messages.create(room_id, text=(message[0].imdata))
AttributeError: 'dict' object has no attribute 'imdata'
Это должно быть связано с попыткой доступа к значению dict, я довольно младший на python, и я не кажется, это работает ...
по-другому:
def printws():
while True:
print((ws.recv()(["imdata"][0]["fvAEPg"]["attributes"]["name"])))
Exception in thread Thread-1:
Traceback (most recent call last):
File "/usr/lib64/python3.6/threading.py", line 916, in _bootstrap_inner
self.run()
File "/usr/lib64/python3.6/threading.py", line 864, in run
self._target(*self._args, **self._kwargs)
File "aci_teste_new161.py", line 190, in printws
print((ws.recv()(["imdata"][0]["fvAEPg"]["attributes"]["name"])))
TypeError: string indices must be integers
любая помощь?