日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

1.轉(zhuǎn)換:對象與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)換:對象集合與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)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關(guān)注

    關(guān)注

    58

    文章

    4889

    瀏覽量

    90330
  • ASSERT
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    7679
  • JSON
    +關(guān)注

    關(guān)注

    0

    文章

    129

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

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

    [VirtualLab] 使用Python運行VirtualLab Fusion光學仿真

    摘要 VirtualLab Fusion允許Python外部訪問其建模技術(shù)、求解器和結(jié)果。這個用例介紹了一種使用路徑變量和Visual Studio代碼將Python連接到VirtualLab
    發(fā)表于 03-31 09:39

    如何在 VisionFive 上使用 Python 包?

    Fedora 并確保 VisionFive 已連接到互聯(lián)網(wǎng)。有關(guān)詳細說明,請參閱通過以太網(wǎng)使用 SSH或使用 USB 轉(zhuǎn)串行轉(zhuǎn)換器部分中的VisionFive 單板計算機快速入門指南. 執(zhí)行pip命令
    發(fā)表于 03-30 08:28

    JSON:簡潔代碼高效搞定序列化與反序列化

    面對頻繁的數(shù)據(jù)交互需求,用最簡方式實現(xiàn)JSON序列化與反序列化已成為開發(fā)者必備技能,借助主流庫,輕松實現(xiàn)零負擔數(shù)據(jù)轉(zhuǎn)換。JSON(JavaScriptObjectNotation)是一種輕量級
    的頭像 發(fā)表于 02-25 19:04 ?264次閱讀
    <b class='flag-5'>JSON</b>:簡潔代碼高效搞定序列化與反序列化

    極簡代碼,搞定JSON序列化與反序列化

    LuatOS開發(fā)中,使用以下兩個函數(shù)高效處理JSON數(shù)據(jù)。 1.1 ?兩個關(guān)鍵函數(shù) 1)json.encode(obj,t) 功能是將Lua對象序列化為
    的頭像 發(fā)表于 02-23 21:46 ?459次閱讀
    極簡代碼,搞定<b class='flag-5'>JSON</b>序列化與反序列化

    cJSON庫是什么?

    的文本格式,但是也使用了類似于C語言家族的習慣(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的數(shù)據(jù)交換語言。 cJSON
    發(fā)表于 01-29 07:13

    詳解DBC的Signal與JSON文本結(jié)合

    為了優(yōu)化CAN數(shù)據(jù)發(fā)送與接收的操作流程,更改以前手動輸入狀態(tài)對應(yīng)數(shù)據(jù)的模式,采用下拉列表選擇內(nèi)容,但這需要用到超出DBC原有承載能力的信息。因此,將JSON與其結(jié)合,采用JSON格式文本寫入Signal的Comment屬性,將Comment屬性的字符串通過
    的頭像 發(fā)表于 01-06 10:57 ?445次閱讀
    詳解DBC的Signal與<b class='flag-5'>JSON</b>文本結(jié)合

    沒有專利的opencv-python 版本

    所有 官方發(fā)布的 opencv-python 核心版本(無 contrib 擴展)都無專利風險——專利問題僅存在于 opencv-contrib-python 擴展模塊中的少數(shù)算法(如早期 SIFT
    發(fā)表于 12-13 12:37

    解析淘寶拍立淘按圖搜索API接口與JSON數(shù)據(jù)示例參考

    應(yīng)用。 獲取API權(quán)限和密鑰(App Key、App Secret)。 使用Python調(diào)用API的示例代碼。 3. JSON數(shù)據(jù)示例與解析 返回的JSON數(shù)據(jù)結(jié)構(gòu)解析。 如何提取關(guān)鍵信息(如商品ID、名稱、價格、圖片等)。 4
    的頭像 發(fā)表于 11-11 13:19 ?509次閱讀

    python app不能運行怎么解決?

    ;python_agent[1241]: xmlrpc request method supervisor.stopProcess failed;python_agent[1241]: xmlrpc request method supervisor.stopProces
    發(fā)表于 08-06 06:27

    迅為RK3568開發(fā)板基本工程目錄-app.json5

    AppScope>app.json5 是應(yīng)用的全局的配置文件,用于存放應(yīng)用公共的配置信息。app.json5文件內(nèi)容如下圖所示: 第 3 行代碼 bundleName 是包名 第 4
    發(fā)表于 07-14 10:56

    harmony-utilsJSONUtil,JSON工具類

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

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

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

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

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

    從FA模型切換到Stage模型時:module的切換說明

    module的切換 從FA模型切換到Stage模型時,開發(fā)者需要將config.json文件module標簽下的配置遷移到module.json5配置文件module標簽下,具體差異
    發(fā)表于 06-05 08:16

    不用聯(lián)網(wǎng)不用編程,PLC通過智能網(wǎng)關(guān)快速實現(xiàn)HTTP協(xié)議JSON格式與MES等系統(tǒng)平臺雙向數(shù)據(jù)通訊

    智能網(wǎng)關(guān)IGT-DSER支持POST/GET/PUT等多種方法,可同時作為HTTP協(xié)議的客戶端和服務(wù)端。作為客戶端通訊時將JSON文件提交給HTTP的服務(wù)端, 如果服務(wù)端有返回的JSON,網(wǎng)關(guān)
    的頭像 發(fā)表于 05-13 14:40 ?1438次閱讀
    不用聯(lián)網(wǎng)不用編程,PLC通過智能網(wǎng)關(guān)快速實現(xiàn)HTTP協(xié)議<b class='flag-5'>JSON</b>格式與MES等系統(tǒng)平臺雙向數(shù)據(jù)通訊
    如皋市| 汝州市| 中牟县| 大冶市| 胶州市| 丽江市| 鄂托克前旗| 文成县| 巴东县| 鸡泽县| 金门县| 红安县| 包头市| 凤庆县| 静乐县| 中牟县| 广灵县| 宁乡县| 双江| 十堰市| 越西县| 凌源市| 西乡县| 巴南区| 宁乡县| 江都市| 汽车| 南澳县| 金坛市| 互助| 即墨市| 景泰县| 来凤县| 中宁县| 砀山县| 平陆县| 江达县| 咸阳市| 苏州市| 临漳县| 永丰县|