一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - 對python中Json與object轉化的方法詳解

對python中Json與object轉化的方法詳解

2021-05-10 00:20歐程 Python

今天小編就為大家分享一篇對python中Json與object轉化的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

python提供了json包來進行json處理,json與python中數據類型對應關系如下:

對python中Json與object轉化的方法詳解

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
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轉換成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轉換成object
class userDecode(json.JSONDecoder):
  def decode(self, s):
    dic = super().decode(s)
    return user(dic['name'], dic['pwd'])
 
#重寫JSONDecoder的__init__方法,dict轉換成object
class userDecode2(json.JSONDecoder):
  def __init__(self):
    json.JSONDecoder.__init__(self, object_hook=dic2objhook)
 
 
# 對象轉換成dict
def obj2dict(obj):
 
  if (isinstance(obj, user)):
    return {
      'name': obj.name,
      'pwd': obj.pwd
    }
  else:
    return obj
 
# dict轉換為對象
def dic2objhook(dic):
 
  if isinstance(dic, dict):
    return user(dic['name'], dic['pwd'])
  return dic
 
# 第一種方式,直接把對象先轉換成dict
u = user('smith', '123456')
uobj = json.dumps(obj2dict(u))
print('uobj: ', uobj)
 
 
#第二種方式,利用json.dumps的關鍵字參數default
u = user('smith', '123456')
uobj2 = json.dumps(u, default=obj2dict)
print('uobj2: ', uobj)
 
#第三種方式,定義json的encode和decode子類,使用json.dumps的cls默認參數
user_encode_str = json.dumps(u, cls=userEncoder)
print('user2json: ', user_encode_str)
 
#json轉換為object
u2 = json.loads(user_encode_str, cls=userDecode)
print('json2user: ', u2)
 
#另一種json轉換成object的方式
u3 = json.loads(user_encode_str, cls=userDecode2)
print('json2user2: ', u3)

輸出結果如下:

?
1
2
3
4
5
6
7
8
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轉化的方法詳解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/wlsyn/article/details/52150217

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产日韩欧美综合一区二区三区 | 免费国产成人α片 | 午夜国产精品影院在线观看 | 97操| 国产99久久久国产精品成人 | 大伊香蕉在线精品不卡视频 | 被18号每天强行榨干acg | 青草国产福利视频免费观看 | 国产成人综合视频 | 麻豆夏晴子 | 亚洲国产精品日韩高清秒播 | 亚洲26uuuu最新地址 | 特黄特黄aaaa级毛片免费看 | 国产精品成人免费观看 | 午夜片无码区在线观看 | 国产91精品在线播放 | 青青91 | 99精彩视频在线观看 | 韩国一级淫片特黄特刺激 | 欧美一级片在线免费观看 | 色图片小说 | 高清一区 | 国产有码在线 | 出差被灌醉绝伦的上司日本 | 韩国三级年轻的小婊孑 | 亚洲AV无码偷拍在线观看 | 久久国产精品人妻中文 | ass性强迫rape| 激情综合色啪啪小说 | 拍拍叫痛的无挡视频免费 | 国产精品一级香蕉一区 | 精品无人区麻豆乱码1区2 | 成人网免费视频 | 欧美高清在线精品一区 | 欧美成人aa久久狼窝动画 | 国产精品每日在线观看男人的天堂 | 久久99re8热在线播放 | 狠狠色狠狠色综合婷婷tag | 香蕉免费一区二区三区在线观看 | 欧美春宫 | 成人免费淫片95视频观看网站 |