新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 基于Dragonbaord 410c開發板實現JSON通信報文解析

        基于Dragonbaord 410c開發板實現JSON通信報文解析

        作者: 時間:2017-10-11 來源:網絡 收藏

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

        本文引用地址:http://www.104case.com/article/201710/365544.htm

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

        apt-get install -py

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

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

        ‘{

        “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”

        }

        }

        }’

        在這個報文中,報文的收發者ID、時間戳、消息類型、用戶名、用戶的密碼MD5值、用戶性別等信息等,發送該報文可以向dragonbaord 410c設備申請注冊,這里就以該注冊報文為例來教大家如何快速的編寫python腳本來實現對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)

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



        關鍵詞: DragonBoard410c json

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 甘泉县| 株洲市| 固原市| 鹤壁市| 晋江市| 曲沃县| 千阳县| 松阳县| 微博| 麻城市| 朝阳区| 柘城县| 浪卡子县| 德化县| 南岸区| 萨嘎县| 正安县| 富源县| 武宣县| 崇州市| 新安县| 江都市| 澄城县| 文山县| 灵璧县| 栾城县| 鄯善县| 临朐县| 峨山| 万州区| 西乌珠穆沁旗| 肇州县| 永善县| 南安市| 聂荣县| 唐海县| 资兴市| 南康市| 长兴县| 禹城市| 宣武区|