新聞中心

        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

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 天气| 扬中市| 修武县| 政和县| 黑河市| 西充县| 长海县| 宣威市| 文水县| 宜黄县| 连平县| 昆明市| 南华县| 梅河口市| 洪湖市| 华坪县| 尼勒克县| 定州市| 出国| 双桥区| 沙坪坝区| 广昌县| 门头沟区| 江山市| 伊金霍洛旗| 衡阳县| 永州市| 内丘县| 马关县| 高安市| 日土县| 西乌珠穆沁旗| 兴山县| 武强县| 栖霞市| 通江县| 克拉玛依市| 莱西市| 祁阳县| 九龙县| 呈贡县|