最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

對python中Json與object轉(zhuǎn)化的方法詳解

 更新時間:2018年12月31日 14:47:17   作者:歐程  
今天小編就為大家分享一篇對python中Json與object轉(zhuǎn)化的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

python提供了json包來進行json處理,json與python中數(shù)據(jù)類型對應(yīng)關(guān)系如下:

python Json與object轉(zhuǎn)化

一個python object無法直接與json轉(zhuǎn)化,只能先將對象轉(zhuǎn)化成dictionary,再轉(zhuǎn)化成json;對json,也只能先轉(zhuǎn)換成dictionary,再轉(zhuǎn)化成object,通過實踐,源碼如下:

import json

class user:
  def __init__(self, name, pwd):
    self.name = name
    self.pwd = pwd

  def __str__(self):
    return 'user(' + self.name + ',' + self.pwd + ')'

#重寫JSONEncoder的default方法,object轉(zhuǎn)換成dict
class userEncoder(json.JSONEncoder):
  def default(self, o):
    if isinstance(o, user):
      return {
        'name': o.name,
        'pwd': o.pwd
      }
    return json.JSONEncoder.default(o)

#重寫JSONDecoder的decode方法,dict轉(zhuǎn)換成object
class userDecode(json.JSONDecoder):
  def decode(self, s):
    dic = super().decode(s)
    return user(dic['name'], dic['pwd'])

#重寫JSONDecoder的__init__方法,dict轉(zhuǎn)換成object
class userDecode2(json.JSONDecoder):
  def __init__(self):
    json.JSONDecoder.__init__(self, object_hook=dic2objhook)


# 對象轉(zhuǎn)換成dict
def obj2dict(obj):

  if (isinstance(obj, user)):
    return {
      'name': obj.name,
      'pwd': obj.pwd
    }
  else:
    return obj

# dict轉(zhuǎn)換為對象
def dic2objhook(dic):

  if isinstance(dic, dict):
    return user(dic['name'], dic['pwd'])
  return dic

# 第一種方式,直接把對象先轉(zhuǎn)換成dict
u = user('smith', '123456')
uobj = json.dumps(obj2dict(u))
print('uobj: ', uobj)


#第二種方式,利用json.dumps的關(guān)鍵字參數(shù)default
u = user('smith', '123456')
uobj2 = json.dumps(u, default=obj2dict)
print('uobj2: ', uobj)

#第三種方式,定義json的encode和decode子類,使用json.dumps的cls默認參數(shù)
user_encode_str = json.dumps(u, cls=userEncoder)
print('user2json: ', user_encode_str)

#json轉(zhuǎn)換為object
u2 = json.loads(user_encode_str, cls=userDecode)
print('json2user: ', u2)

#另一種json轉(zhuǎn)換成object的方式
u3 = json.loads(user_encode_str, cls=userDecode2)
print('json2user2: ', u3)

輸出結(jié)果如下:

C:\python\python.exe C:/Users/Administrator/PycharmProjects/pytest/com/guo/myjson.py
uobj: {"name": "smith", "pwd": "123456"}
uobj2: {"name": "smith", "pwd": "123456"}
user2json: {"name": "smith", "pwd": "123456"}
json2user: user(smith,123456)
json2user2: user(smith,123456)

Process finished with exit code 0

以上這篇對python中Json與object轉(zhuǎn)化的方法詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python實現(xiàn)密碼薄文件讀寫操作

    Python實現(xiàn)密碼薄文件讀寫操作

    這篇文章主要介紹了Python實現(xiàn)密碼薄文件讀寫操作,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • 淺談python新式類和舊式類區(qū)別

    淺談python新式類和舊式類區(qū)別

    python的新式類是2.2版本引進來的,我們可以將之前的類叫做經(jīng)典類或者舊式類。這篇文章主要介紹了淺談python新式類和舊式類區(qū)別,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 基于PyInstaller各參數(shù)的含義說明

    基于PyInstaller各參數(shù)的含義說明

    這篇文章主要介紹了基于PyInstaller各參數(shù)的含義說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • Python實現(xiàn)檢測服務(wù)器是否可以ping通的2種方法

    Python實現(xiàn)檢測服務(wù)器是否可以ping通的2種方法

    這篇文章主要介紹了Python實現(xiàn)檢測服務(wù)器是否可以ping通的2種方法,本文分別講解了使用ping和fping命令檢測服務(wù)器是否可以ping通,需要的朋友可以參考下
    2015-01-01
  • Python?xlwt工具使用詳解,生成excel欄位寬度可自適應(yīng)內(nèi)容長度

    Python?xlwt工具使用詳解,生成excel欄位寬度可自適應(yīng)內(nèi)容長度

    這篇文章主要介紹了Python?xlwt工具使用詳解,生成excel欄位寬度可自適應(yīng)內(nèi)容長度,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • python實現(xiàn)點擊按鈕修改數(shù)據(jù)的方法

    python實現(xiàn)點擊按鈕修改數(shù)據(jù)的方法

    今天小編就為大家分享一篇python實現(xiàn)點擊按鈕修改數(shù)據(jù)的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Pycharm搭建Django項目詳細教程(看完這一篇就夠了)

    Pycharm搭建Django項目詳細教程(看完這一篇就夠了)

    這篇文章主要給大家介紹了關(guān)于Pycharm搭建Django項目的詳細教程,想要學習的小伙伴看完這一篇就夠了,pycharm是一種Python?IDE,帶有一整套可以幫助用戶在使用Python語言開發(fā)時提高其效率的工具,需要的朋友可以參考下
    2023-11-11
  • Python中運算符

    Python中運算符"=="和"is"的詳解

    大家都知道python中有很多的運算符,今天我們就來深入的介紹is和==這兩種運算符以及他們的區(qū)別,有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-10-10
  • 利用Python如何生成便簽圖片詳解

    利用Python如何生成便簽圖片詳解

    python現(xiàn)在火熱的程度相信不用過多介紹了,下面這篇文章主要給大家介紹了關(guān)于利用Python如何生成便簽圖片的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用python具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • python 2.7.14安裝圖文教程

    python 2.7.14安裝圖文教程

    這篇文章主要為大家詳細介紹了python 2.7.14安裝圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04

最新評論

绥滨县| 石河子市| 理塘县| 景德镇市| 绥宁县| 宁夏| 大石桥市| 重庆市| 同江市| 巴彦县| 始兴县| 永宁县| 丹江口市| 垣曲县| 丁青县| 皮山县| 古蔺县| 津南区| 韶山市| 辽宁省| 长宁县| 敦煌市| 永胜县| 晋江市| 翁牛特旗| 平潭县| 饶平县| 九龙城区| 阿拉善右旗| 临邑县| 兴业县| 清涧县| 社旗县| 阳山县| 商水县| 石首市| 永兴县| 鹰潭市| 琼中| 青海省| 油尖旺区|