91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中使用字典和json.dumps()會遇到什么問題

發布時間:2021-07-02 10:18:54 來源:億速云 閱讀:153 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關python中使用字典和json.dumps()會遇到什么問題的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

最近項目中需要與管易云erp做對接,看了他的接口文檔,php的示例代碼,于是用python仿寫。

其中傳的參數data中前面幾個json數據是固定的,最后需要加一個簽名,該簽名是對前面的json數據字符串化后,首尾拼接上screct字符串,再做md5處理(32位大寫),再將該簽名添加到之前的json中作為post參數傳遞過去。

問題就出在組裝json字符串和簽名中,因為python內置的字典是無序的,導致我組裝好的json數據作為參數傳遞給自己編寫的簽名函數時,字典內部的順序是變化的,所以簽名前后的md5值不一樣,導致頻頻報錯,自己起初沒在意數據順序的事,因為對接金蝶erp時沒有簽名這一項,數據傳遞的很簡單,導致排錯時方向出現錯誤。后來想到這了顧開始解決。

解決方法是使用collections庫中的OrderedDict(有序字典)模塊,組裝好的數據就不會亂序,做的md5簽名也就前后一致了

但,在對json數據使用json.dumps()方法時,字符串化后的數據在逗號后會有一個空格,導致md5值出錯

原理:

python中使用字典和json.dumps()會遇到什么問題

解決方法是

json.dumps(data,separators=(',',':'))

最后,將自己寫的函數留下來做個例子

def getShops():
  data = OrderedDict()
  data["appkey"] = appkey
  data["sessionkey"] = sessionkey
  data["method"] = method
  data["page_no"] = "1"
  data["page_size"] = "10"
  data["sign"] = sign(data,secret)
  
  response = requests.post(url=url, data=json.dumps(data))
  print(response.text)


def sign(data,secret):
  str = json.dumps(data,separators=(',',':'))
  fullStr = secret+str+secret
  signCode = hashlib.md5(fullStr.encode("utf-8")).hexdigest().upper()
  #print(signCode)
  return signCode

感謝各位的閱讀!關于“python中使用字典和json.dumps()會遇到什么問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁乡县| 大名县| 广丰县| 蓝田县| 崇州市| 四川省| 海城市| 桃园县| 团风县| 黑山县| 建始县| 成都市| 黄大仙区| 新丰县| 祁连县| 绍兴县| 韶山市| 通海县| 宁南县| 琼中| 喀什市| 体育| 体育| 策勒县| 剑河县| 澄江县| 嘉兴市| 原平市| 论坛| 贺州市| 万安县| 岳西县| 佛教| 泸溪县| 珲春市| 左云县| 陇川县| 临城县| 嘉祥县| 新源县| 依安县|