首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dbus-python如何返回字典数组

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

Stack Overflow用户
提问于 2017-08-02 12:22:53
回答 1查看 924关注 0票数 2

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

代码语言:javascript
复制
   @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

编辑:这也不起作用:

代码语言:javascript
复制
   @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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-08-02 12:48:57

我想出来了,答案是:

代码语言:javascript
复制
   @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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45460788

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档