chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

python之對(duì)象和json互相轉(zhuǎn)換

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

掃碼添加小助手

加入工程師交流群

1.轉(zhuǎn)換:對(duì)象與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.轉(zhuǎn)換:對(duì)象集合與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



審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4848

    瀏覽量

    88936
  • ASSERT
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    7598
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    122

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    harmony-utilsJSONUtil,JSON工具類

    harmony-utilsJSONUtil,JSON工具類 harmony-utils 簡(jiǎn)介與說(shuō)明 harmony-utils 一款功能豐富且極易上手的HarmonyOS工具庫(kù),借助眾多實(shí)用工具類
    的頭像 發(fā)表于 07-03 18:21 ?277次閱讀

    harmony-utilsTempUtil,溫度轉(zhuǎn)換工具類

    harmony-utilsTempUtil,溫度轉(zhuǎn)換工具類 harmony-utils 簡(jiǎn)介與說(shuō)明 [harmony-utils] 一款功能豐富且極易上手的HarmonyOS工具庫(kù),借助眾多
    的頭像 發(fā)表于 06-26 00:50 ?208次閱讀

    迅為RK3568開(kāi)發(fā)板編寫(xiě)bundle.json文件

    bundle.json 文件內(nèi)容如下所示: 下面是對(duì)各個(gè)字段的解釋: name: \"@ohos/demos\" - 這是組件或項(xiàng)目的名稱,這里表示它屬于 OHOS
    發(fā)表于 06-05 15:38

    將預(yù)先訓(xùn)練的固態(tài)盤MobileNetV2模型轉(zhuǎn)換為IR,在運(yùn)行替換器“REPLACEMENT_ID”時(shí)發(fā)生異常錯(cuò)誤怎么解決?

    將預(yù)先訓(xùn)練的固態(tài)盤 MobileNetV2 模型轉(zhuǎn)換為 IR,但無(wú)法轉(zhuǎn)換經(jīng)過(guò)自定義訓(xùn)練的模型。 導(dǎo)出的凍結(jié)模型圖:python object_detection
    發(fā)表于 03-07 08:01

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

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

    無(wú)法轉(zhuǎn)換TF OD API掩碼RPGA模型怎么辦?

    無(wú)法轉(zhuǎn)換重新訓(xùn)練的 TF OD API 掩碼 RPGA 模型,該模型使用以下命令在 GPU 上工作: mo > --saved_model_dir
    發(fā)表于 03-06 06:44

    使用Yolo-v3-TF運(yùn)行OpenVINO?對(duì)象檢測(cè)Python演示時(shí)的結(jié)果不準(zhǔn)確的原因?

    通過(guò)模型下載器下載了 yolo-v3-tf: ./downloader.py --name yolo-v3-tf 通過(guò)模型 優(yōu)化器轉(zhuǎn)換模型: python3 ./model_optimizer
    發(fā)表于 03-06 06:31

    為什么無(wú)法使用OpenVINO?模型優(yōu)化器轉(zhuǎn)換TensorFlow 2.4模型?

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

    無(wú)法在Windows Subsystem for Linux 2上使用對(duì)象檢測(cè)Python演示運(yùn)行YoloV4模型?

    在 WSL2 上運(yùn)行對(duì)象檢測(cè) python 演示。 使用 CPU 運(yùn)行 object_detection_demo.py 時(shí)遇到錯(cuò)誤: OpenCV: FFMPEG: tag
    發(fā)表于 03-05 08:43

    對(duì)象存儲(chǔ)是什么結(jié)構(gòu)類型?

    對(duì)象存儲(chǔ)屬于非結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)架構(gòu),采用扁平化命名空間結(jié)構(gòu)。其核心通過(guò)唯一標(biāo)識(shí)符(ObjectID)定位數(shù)據(jù)對(duì)象,突破傳統(tǒng)文件系統(tǒng)的層級(jí)目錄限制,形成"桶-對(duì)象"兩級(jí)邏輯模型。數(shù)據(jù)以獨(dú)立對(duì)象
    的頭像 發(fā)表于 02-10 11:14 ?609次閱讀

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

    有助于將符合 3GPP 技術(shù)規(guī)范 24.301 和 24.501 的 NAS 消息與 XML 和 JSON 格式進(jìn)行轉(zhuǎn)換。這些工具可在 Windows 和 Linux 平臺(tái)上使用。使用 OSS
    的頭像 發(fā)表于 02-09 09:16 ?670次閱讀
    OSS Nokalva:適用于<b class='flag-5'>Python</b>的OSS NAS工具

    think-cell——使用JSON數(shù)據(jù)實(shí)現(xiàn)自動(dòng)化(一)

    您可以使用 JSON 中的數(shù)據(jù)來(lái)復(fù)制最初作為模板創(chuàng)建的圖表,并為其提供新的數(shù)據(jù)表。您可以控制使用特定模板構(gòu)建新演示文稿的順序。模板也可以多次使用。 PowerPoint 模板和 JSON 數(shù)據(jù)都可以
    的頭像 發(fā)表于 01-02 13:37 ?603次閱讀
    think-cell——使用<b class='flag-5'>JSON</b>數(shù)據(jù)實(shí)現(xiàn)自動(dòng)化(一)

    HarmonyOS Next 應(yīng)用元服務(wù)開(kāi)發(fā)-分布式數(shù)據(jù)對(duì)象遷移數(shù)據(jù)權(quán)限與基礎(chǔ)數(shù)據(jù)

    使用分布式數(shù)據(jù)對(duì)象遷移數(shù)據(jù),當(dāng)需要遷移的數(shù)據(jù)較大(100KB以上)或需要遷移文件時(shí),可以使用分布式數(shù)據(jù)對(duì)象。原理與接口說(shuō)明詳見(jiàn)分布式數(shù)據(jù)對(duì)象跨設(shè)備數(shù)據(jù)同步。 說(shuō)明:自API 12起,由于直接使用跨
    發(fā)表于 12-24 09:40

    實(shí)例篇 4G模組軟件json數(shù)據(jù)處理!

    今天我會(huì)把4G模組軟件的json數(shù)據(jù)處理整理成文,以低功耗模組Air780E為例,一一展示出來(lái):
    的頭像 發(fā)表于 11-12 12:17 ?783次閱讀

    Python庫(kù)解析:通過(guò)庫(kù)實(shí)現(xiàn)代理請(qǐng)求與數(shù)據(jù)抓取

    Python中,有多個(gè)庫(kù)可以幫助你實(shí)現(xiàn)代理請(qǐng)求和數(shù)據(jù)抓取。這些庫(kù)提供了豐富的功能和靈活的API,使得你可以輕松地發(fā)送HTTP請(qǐng)求、處理響應(yīng)、解析HTML/XML/JSON數(shù)據(jù),以及進(jìn)行復(fù)雜的網(wǎng)絡(luò)操作。
    的頭像 發(fā)表于 10-24 07:54 ?662次閱讀