dbuspython如何返回字典数组

2024-09-30 14:16:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Ubuntu16.04上,使用的是pythondbus。我想通过DBus向我的客户机返回一个字典列表,但似乎只能返回一个字符串数组。如果我将dbus签名修饰符改为'as{v}',我会得到一个异常:“ValueError:Corrupt type signature”。如何通过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

编辑:这也不起作用:

^{pr2}$

Tags: nameindevself列表字典asservice
1条回答
网友
1楼 · 发布于 2024-09-30 14:16:23

我想出来了,答案是:

   @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

相关问题 更多 >

    热门问题