• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

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

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

    本文引用地址:http://www.czjhyjcfj.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

    評論


    技術專區

    關閉
    主站蜘蛛池模板: 泾川县| 临沂市| 镇雄县| 阿拉善盟| 闽清县| 民权县| 汝城县| 布拖县| 琼中| 梁山县| 湘潭县| 绥芬河市| 江北区| 香格里拉县| 额济纳旗| 峨山| 察雅县| 大同县| 新津县| 大同县| 诸暨市| 盐亭县| 静海县| 霸州市| 景德镇市| 栾川县| 博兴县| 安乡县| 青浦区| 博湖县| 林周县| 武陟县| 定陶县| 汉中市| 济宁市| 吉林省| 五华县| 攀枝花市| 惠水县| 仙游县| 涡阳县|