gpt4 book ai didi

python - dbus-python 如何返回字典数组

转载 作者:太空狗 更新时间:2023-10-29 12:24:42 30 4
gpt4 key购买 nike

我在 Ubuntu 16.04 上使用 Python Dbus。我想通过 DBus 将字典列表返回给我的客户端,但似乎只能返回一个字符串数组。如果我将我的 dbus 签名装饰器更改为“as{v}”,我会得到一个异常:“ValueError:损坏的类型签名”。如何通过 DBus 返回字典列表?

   @dbus.service.method("com.example.service.BtScanList", in_signature='', out_signature='as')
def getScanList(self):
btMsg("Starting BT Scan List...")
# Populate device lists ( returns dictionary --> { 'mac_address' : xxx , 'name' : xxx }
self.discoveredDevs = self.getScannedDevices()
returnList = []
for dev in self.discoveredDevs:
returnList.append(dev["name"])
return returnList

编辑:这也不起作用:

   @dbus.service.method("com.example.service.BtScanList", in_signature='', out_signature='a{sv}')
def getScanList(self):
btMsg("Starting BT Scan List...")
# Populate device lists ( returns dictionary --> { 'mac_address' : xxx , 'name' : xxx }
self.discoveredDevs = self.getScannedDevices()
returnList = dbus.Array()
for dev in self.discoveredDevs:
btMsg(dev)
returnList.append(dbus.Dictionary(dev, signature='sv'))
return returnList

最佳答案

我想通了,答案在这里:

   @dbus.service.method("com.example.service.BtPairedList", in_signature='', out_signature='aa{ss}')
def getPairedList(self):
btMsg("Starting BT Paired List...")
# Populate device lists ( returns dictionary --> { 'mac_address' : xxx , 'name' : xxx }
self.pairedDevs = self.getPairedDevices()
returnList = dbus.Array()
for dev in self.pairedDevs:
btMsg(dev)
returnList.append(dbus.Dictionary(dev, signature='sv'))
return returnList

关于python - dbus-python 如何返回字典数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45460788/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com