<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于Dragonbaord 410c開發(fā)板實現(xiàn)JSON通信報文解析

          基于Dragonbaord 410c開發(fā)板實現(xiàn)JSON通信報文解析

          作者: 時間:2017-10-11 來源:網(wǎng)絡 收藏

          在物聯(lián)網(wǎng)IOT設計和開發(fā)中,我們通常會遇到一些數(shù)據(jù)交互和傳輸問題,我們需要在不同的設備間傳遞數(shù)據(jù)進行交互通信,通常我們需要選擇一個合適的數(shù)據(jù)交互協(xié)議和格式,這樣我們的設計才會得到極大的簡化,和提高設計質(zhì)量,JSON是一種是一種輕量級的數(shù)據(jù)交換格式,近年來不僅被廣泛的使用在互聯(lián)網(wǎng)鄰域,同時在IOT領域也得到了廣泛的應用,利用JSON來進行數(shù)據(jù)交互成為了眾多IOT設計方案的優(yōu)選,本節(jié)blog將在我們當前非常流行的IOT開發(fā)套件draongboard 410c上來實現(xiàn)JSON報文的解析和應用。

          本文引用地址:http://www.ex-cimer.com/article/201710/365544.htm

          這里我們使用的是Python腳本在dragonboard 410c上實現(xiàn)對JSON報文的解析,這里python提供了JSON庫模塊來處理JSON報文,這里我們只需要在dragonboard 410c上使用apt-get工具安裝JSON的python模塊即可,具體的安裝命令如下:

          apt-get install -py

          安裝好后,再使用import 導入即可使用該模塊了,利用該模塊來進行JSON解析非常方便,下面我們就來看如何使用JSON模塊來快捷的實現(xiàn)對JSON報文的解析:

          這里我們給出一個常用的系統(tǒng)用戶注冊報文示例,如下:

          ‘{

          “report”:{

          “from”:“MBD000000001”,

          “to”:“MBS000000001”,

          “TImeStamp”:“2017-1-14 12:45:32”,

          “msg”:{

          “type”:0,

          “userName”:“test1”,

          “userMD5”:“abdsetsasgt”,

          “sexuality”:“男”,

          “age”:“19”,

          “phone”:“15361822674”,

          “email”:“331212931@qq.com”

          }

          }

          }’

          在這個報文中,報文的收發(fā)者ID、時間戳、消息類型、用戶名、用戶的密碼MD5值、用戶性別等信息等,發(fā)送該報文可以向dragonbaord 410c設備申請注冊,這里就以該注冊報文為例來教大家如何快速的編寫python腳本來實現(xiàn)對JSON報文的解析。

          具體的python代碼如下:

          #coding:utf8

          import sys

          import

          class MssageProcessing:

          def __init__(self,recvMsg):

          self.reporTIsError=0

          self.reporTID=“”

          self.toID=“”

          try:

          self.reportJosn=json.loads(recvMsg)[“report”]

          self.msgJosn=self.reportJosn[“msg”]

          self.fromID=self.getFromID()

          if self.fromID!=“error”:

          self.reporTIsError=0

          else:

          self.reportIsError=1

          self.toID=self.getToID()

          if self.toID!=“error”:

          self.reportIsError=0

          else:

          self.reportIsError=1

          except:

          print(“recv report is error”)

          self.reportIsError=1

          def updateMsg(self,recvMsg):

          self.reportJosn=json.loads(recvMsg)[“report”]

          self.msgJosn=self.reportJosn[“msg”]

          self.fromID=self.getFromID()

          self.toID=self.getToID()

          self.mobaiServiceID=“MBS000000001”

          def getFromID(self):

          fID=self.reportJosn[“from”]

          print(fID)

          if len(fID)!=12:

          return “error”

          else:

          if fID[0:3]==“MBS” or fID[0:3]==“MBU” or fID[0:3]==“MBD”:

          try:

          int(fID[3:])

          return fID

          except:

          return “error”

          else:

          return “error”

          def getToID(self):

          print(self.reportJosn[“to”])

          return self.reportJosn[“to”]

          def getTimeStamp(self):

          print(self.reportJosn[“timeStamp”])

          return self.reportJosn[“timeStamp”]

          def getMsgType(self):

          print(self.msgJosn[“type”])

          return self.msgJosn[“type”]

          if __name__==“__main__”:

          recvMsg=MssageProcessing(‘{“report”:{“from”:“000000000001”,“to”:“000000000002”,“timeStamp”:“2017-1-14 12:45:32”,“msg”:{“type”:0,“userName”:“test1”,“userMD5”:“abdsetsasgt”,“sexuality”:“男”,“age”:“19”}}}’)

          recvMsg.getFromID()

          recvMsg.getToID()

          recvMsg.getMsgType()

          [userName,userMD5,sexuality,age]=recvMsg.registerMessageHandle()

          print(userName)

          print(userMD5)

          運行上述代碼我們就可以看到,我們可以獲取報文中對應字段標簽的內(nèi)容進行打印,表示對JSON報文解析成功。



          關鍵詞: DragonBoard410c json

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();