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

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

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

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

python Json與object轉(zhuǎn)化

一個(gè)python object無(wú)法直接與json轉(zhuǎn)化,只能先將對(duì)象轉(zhuǎn)化成dictionary,再轉(zhuǎn)化成json;對(duì)json,也只能先轉(zhuǎn)換成dictionary,再轉(zhuǎn)化成object,通過(guò)實(shí)踐,源碼如下:

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)


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

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

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

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

# 第一種方式,直接把對(duì)象先轉(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默認(rèn)參數(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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Python中運(yùn)算符"=="和"is"的詳解

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

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

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

    python 2.7.14安裝圖文教程

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

最新評(píng)論

色达县| 岢岚县| 汉源县| 分宜县| 监利县| 邯郸县| 桦南县| 林芝县| 宽城| 渝中区| 柳州市| 馆陶县| 皋兰县| 洞头县| 蕲春县| 桓台县| 金塔县| 峨山| 永善县| 井冈山市| 莫力| 小金县| 东港市| 兰州市| 化州市| 独山县| 漳浦县| 澄江县| 阿城市| 朝阳区| 伊金霍洛旗| 府谷县| 宜昌市| 德阳市| 云浮市| 建阳市| 建始县| 和平区| 高平市| 雅江县| 连州市|