色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

python之對象和json互相轉換

冬至配餃子 ? 來源:繆斯之子 ? 作者:肖新苗 ? 2022-08-23 10:42 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1.轉換:對象與json

import json
from typing import Dict


class Person:
def __init__(self, name: str = 'xiaomiao'):
self.name = name

@staticmethod
def to_dict(obj: 'Person'):
return obj.__dict__

@classmethod
def from_dict(cls, dict: Dict)->'Person':
p = cls()
p.__dict__ = dict
return p


class Female(Person):
def __init__(self, name: str = 'xiao', sex: int = 1):
self.name = name
self.sex = sex


def test_1():
p = Person('xiao')
json1 = json.dumps(p, default=Person.to_dict)
assert '{"name": "xiao"}' == json1, 'json dump error'
p2 = json.loads(json1, object_hook=Person.from_dict)
assert p.__dict__ == p2.__dict__, 'json loads error'


def test_2():
p_list = [Person('xiao1'), Person('xiao2')]
json1 = json.dumps(p_list, default=Person.to_dict)
assert '[{"name": "xiao1"}, {"name": "xiao2"}]' == json1, 'json dump 2 error'
p2_list = json.loads(json1, object_hook=Person.from_dict)
assert p_list[0].__dict__ == p2_list[0].__dict__ and p_list[1].__dict__ == p2_list[1].__dict__, 'json loads 2 error'


def test_3():
p = Female(name='xiao1', sex=1)
json1 = json.dumps(p, default=Female.to_dict)
assert '{"name": "xiao1", "sex": 1}' == json1, 'json dump error'
p2 = json.loads(json1, object_hook=Female.from_dict)
assert p.__dict__ == p2.__dict__, 'json loads error'

2.轉換:對象集合與json列表

import importlib
import json
from typing import Dict


class Person1:
def __init__(self, name: str = 'xiao'):
self.name = name


class Person:
def __init__(self, name: str = 'good'):
self.name = name
self.p1:Person1 = None

@staticmethod
def to_dict_pure(obj: 'Person'):
return obj.__dict__

@staticmethod
def to_dict(obj: 'Person'):
obj.__dict__.update(
{'fullname': f'{obj.__module__}.{obj.__class__.__name__}'})
return obj.__dict__

@staticmethod
def from_dict(dict: Dict)->'Person':
module, classname = dict['fullname'].rsplit('.', 1)
p = getattr(importlib.import_module(module), classname)()
p.__dict__ = dict
return p


def test_1():
p = Person('xiao')
p.p1 = Person1('xinmiao')
json1 = json.dumps(p, default=Person.to_dict)
assert '{"name": "xiao", "p1": {"name": "xinmiao", "fullname": "test_obj_conv_2.Person1"}, ' +\
'"fullname": "test_obj_conv_2.Person"}' == json1, 'json dumps error'
p2 = json.loads(json1, object_hook=Person.from_dict)
assert p.__dict__['name'] == p2.__dict__['name'] \
and p.__dict__['p1'].__dict__ == p2.__dict__['p1'].__dict__, 'json loads error'


def test_2():
p1 = Person('xiao1')
p1.p1 = Person1('xin1')
p2 = Person('xiao2')
p2.p1 = Person1('xin2')
p_list = [p1, p2]
json1 = json.dumps(p_list, default=Person.to_dict)
assert '[{"name": "xiao1", "p1": {"name": "xin1", "fullname": "test_obj_conv_2.Person1"},' +\
' "fullname": "test_obj_conv_2.Person"}, {"name": "xiao2", "p1": {"name": "xin2", ' +\
'"fullname": "test_obj_conv_2.Person1"}, "fullname": "test_obj_conv_2.Person"}]', 'json dumps 2 error'
p2_list = json.loads(json1, object_hook=Person.from_dict)
assert p_list[0].__dict__['name'] == p2_list[0].__dict__['name'] \
and p_list[0].__dict__['p1'].__dict__ == p2_list[0].__dict__['p1'].__dict__ \
and p_list[1].__dict__['name'] == p2_list[1].__dict__['name'] \
and p_list[1].__dict__['p1'].__dict__ == p2_list[1].__dict__['p1'].__dict



審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • python
    +關注

    關注

    56

    文章

    4829

    瀏覽量

    87118
  • ASSERT
    +關注

    關注

    0

    文章

    17

    瀏覽量

    7509
  • JSON
    +關注

    關注

    0

    文章

    122

    瀏覽量

    7422
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    harmony-utilsJSONUtil,JSON工具類

    harmony-utilsJSONUtil,JSON工具類 harmony-utils 簡介與說明 harmony-utils 一款功能豐富且極易上手的HarmonyOS工具庫,借助眾多實用工具類
    的頭像 發表于 07-03 18:21 ?172次閱讀

    harmony-utilsTempUtil,溫度轉換工具類

    harmony-utilsTempUtil,溫度轉換工具類 harmony-utils 簡介與說明 [harmony-utils] 一款功能豐富且極易上手的HarmonyOS工具庫,借助眾多
    的頭像 發表于 06-26 00:50 ?71次閱讀

    將預先訓練的固態盤MobileNetV2模型轉換為IR,在運行替換器“REPLACEMENT_ID”時發生異常錯誤怎么解決?

    將預先訓練的固態盤 MobileNetV2 模型轉換為 IR,但無法轉換經過自定義訓練的模型。 導出的凍結模型圖:python object_detection
    發表于 03-07 08:01

    如何使用命令將更快的R ACCENT-10.onnx模型轉換為IR?

    使用命令將更快的R ACCENT-10.onnx 模型轉換為 IR:python ./mo_onnx.py --input_model FasterRCNN-10.onnx
    發表于 03-07 07:43

    無法轉換TF OD API掩碼RPGA模型怎么辦?

    無法轉換重新訓練的 TF OD API 掩碼 RPGA 模型,該模型使用以下命令在 GPU 上工作: mo > --saved_model_dir
    發表于 03-06 06:44

    使用Yolo-v3-TF運行OpenVINO?對象檢測Python演示時的結果不準確的原因?

    通過模型下載器下載了 yolo-v3-tf: ./downloader.py --name yolo-v3-tf 通過模型 優化器轉換模型: python3 ./model_optimizer
    發表于 03-06 06:31

    為什么無法使用OpenVINO?模型優化器轉換TensorFlow 2.4模型?

    已下載 ssd_mobilenet_v2_fpnlite_640x640_coco17_tpu-8 型號。 使用將模型轉換為中間表示 (IR) ssd_support_api_v.2.4.json
    發表于 03-05 09:07

    無法在Windows Subsystem for Linux 2上使用對象檢測Python演示運行YoloV4模型?

    在 WSL2 上運行對象檢測 python 演示。 使用 CPU 運行 object_detection_demo.py 時遇到錯誤: OpenCV: FFMPEG: tag
    發表于 03-05 08:43

    OSS Nokalva:適用于Python的OSS NAS工具

    有助于將符合 3GPP 技術規范 24.301 和 24.501 的 NAS 消息與 XML 和 JSON 格式進行轉換。這些工具可在 Windows 和 Linux 平臺上使用。使用 OSS
    的頭像 發表于 02-09 09:16 ?488次閱讀
    OSS Nokalva:適用于<b class='flag-5'>Python</b>的OSS NAS工具

    think-cell——使用JSON數據實現自動化(一)

    您可以使用 JSON 中的數據來復制最初作為模板創建的圖表,并為其提供新的數據表。您可以控制使用特定模板構建新演示文稿的順序。模板也可以多次使用。 PowerPoint 模板和 JSON 數據都可以
    的頭像 發表于 01-02 13:37 ?409次閱讀
    think-cell——使用<b class='flag-5'>JSON</b>數據實現自動化(一)

    實例篇 4G模組軟件json數據處理!

    今天我會把4G模組軟件的json數據處理整理成文,以低功耗模組Air780E為例,一一展示出來:
    的頭像 發表于 11-12 12:17 ?517次閱讀

    Python庫解析:通過庫實現代理請求與數據抓取

    Python中,有多個庫可以幫助你實現代理請求和數據抓取。這些庫提供了豐富的功能和靈活的API,使得你可以輕松地發送HTTP請求、處理響應、解析HTML/XML/JSON數據,以及進行復雜的網絡操作。
    的頭像 發表于 10-24 07:54 ?497次閱讀

    JSON協議是什么,物聯網中的RTU中如何使用JSON協議和服務器交互

    一 概述 1.1 什么是 JSON JSON是JavaScript Object Notation的簡稱,中文含義為“JavaScript 對象表示法”,它是一種數據交換的文本格式,而不是一種編程
    的頭像 發表于 09-25 16:14 ?2260次閱讀
    <b class='flag-5'>JSON</b>協議是什么,物聯網中的RTU中如何使用<b class='flag-5'>JSON</b>協議和服務器交互

    如何利用python和API查詢IP地址?

    Python中,直接查詢IP地址的地理位置或詳細信息(如所屬國家、城市等)通常需要依賴外部API服務,因為Python標準庫本身不提供直接查詢IP地址地理位置的功能。以下是一個使用requests
    發表于 08-28 11:55

    pytorch和python的關系是什么

    在當今的人工智能領域,Python已經成為了最受歡迎的編程語言之一。Python的易學易用、豐富的庫和框架以及強大的社區支持,使其成為了數據科學、機器學習和深度學習等領域的首選語言。而在深度學習領域
    的頭像 發表于 08-01 15:27 ?3323次閱讀
    主站蜘蛛池模板: 久草在线福利资站免费视频 | 国产精品人妻99一区二 | 麻豆影视在线直播观看免费 | 国产精品色欲AV亚洲三区软件 | 一区三区不卡高清影视 | 色偷偷91综合久久噜噜 | 一区一区三区产品 | 亚洲爱视频 | 国产扒开美女双腿屁股流白浆 | 东京热百度影音 | 99视频精品免视3 | 永久免费精品影视网站 | 在线中文字幕 | 且试天下芒果免费观看 | 办公室沙发口爆12P 办公室日本肉丝OL在线 | 成人18视频在线观看 | 日韩中文欧美在线视频 | 果冻传媒2021精品影视 | 久久精品熟女亚洲AV国产 | 2021国产精品 | 99国产精品免费视频 | 乳女教师欲乱动漫无修版动画 | xart欧美一区在线播放 | 午夜视频在线瓜伦 | 日本久久久免费高清 | 国产成人无码区免费内射一片色欲 | 久久精品国产99欧美精品亚洲 | 国内精品九九视频 | 老师真棒无遮瑕版漫画免费 | 亚洲中文无码亚洲人在线观看- | 永久午夜福利视频一区在线观看 | 国产综合无码一区二区色蜜蜜 | 午夜在线播放免费人成无 | 欧美AAAAAA级午夜福利视频 | 久久99影院 | 久久亚洲电影www电影网 | 成年人国产视频 | 日本免费一区二区三区四区五六区 | 欧美乱码卡一卡二卡四卡免费 | 国产精品69人妻无码久久 | 青青视频国产色偷偷 |

    電子發燒友

    中國電子工程師最喜歡的網站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品