电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Python解析JSON對(duì)象的全過程記錄

瀏覽:12日期:2022-06-24 10:08:06
前言

本章節(jié)我們將為大家介紹如何使用 Python 語言來編碼和解碼 JSON 對(duì)象。

json處理模塊的主要任務(wù),是將一個(gè)JSON對(duì)象,轉(zhuǎn)換成Python數(shù)據(jù)類型數(shù)據(jù)進(jìn)行處理,或者反之,將Python數(shù)據(jù)類型數(shù)據(jù),轉(zhuǎn)換成JSON對(duì)象(字符串流),在不同的模塊或者系統(tǒng)間傳輸。

1. JSON數(shù)據(jù)格式特點(diǎn) 對(duì)象表示為鍵值對(duì) 數(shù)據(jù)由逗號(hào)分隔 花括號(hào)保存對(duì)象 方括號(hào)保存數(shù)組

{ 'students': [ { 'name':'北山啦' , 'age':20 }, { 'name':'張三' , 'age':30 }, { 'name':'里斯' , 'age':17 } ]}

{’students’: [{’name’: ’北山啦’, ’age’: 20}, {’name’: ’張三’, ’age’: 30}, {’name’: ’里斯’, ’age’: 17}]}

上面就是一個(gè)JSON格式數(shù)據(jù)。它開起來就像是在Python中的字典數(shù)據(jù)類型。我們可以通過json模塊將它轉(zhuǎn)換成字符串或者反過來將字符串轉(zhuǎn)換成字典數(shù)據(jù)類型。

JSON也支持各種數(shù)據(jù)類型,它的數(shù)據(jù)類型和Python各種數(shù)據(jù)類型之間的對(duì)比如下:

object —— dict array —— list string —— str number —— int/float true/false —— True/False null —— None 2. 常用方法總結(jié)

在json模塊中,用于處理json的主要是四個(gè)函數(shù),分別是:

loads():從JSON字符串中讀取數(shù)據(jù)并轉(zhuǎn)換成Python數(shù)據(jù)類型 load():從JSON文件中讀取數(shù)據(jù)并轉(zhuǎn)換成Python數(shù)據(jù)類型 dumps():將Python數(shù)據(jù)類型數(shù)據(jù)轉(zhuǎn)換成JSON字符串 dump():將Python數(shù)據(jù)類型數(shù)據(jù)轉(zhuǎn)換成JSON字符串寫入到文件 3. 系列化和反系列化

Python解析JSON對(duì)象的全過程記錄

從JSON數(shù)據(jù)轉(zhuǎn)換到Python數(shù)據(jù),叫反系列化(deserialization)

從Python數(shù)據(jù)轉(zhuǎn)換到JSON數(shù)據(jù),叫系列化(serialization)

3.1 系列化

系列化:將Python數(shù)據(jù)轉(zhuǎn)換成JSON字符串的方法。

下面我們先來看一個(gè)簡(jiǎn)單的例子。

import jsondata = { 'students': [ { 'name':'北山啦' , 'age':20 }, { 'name':'張三' , 'age':30 }, { 'name':'里斯' , 'age':17 } ]}print(type(data))print(data)json_str = json.dumps(data)print(type(json_str))

<class ’dict’>{’students’: [{’name’: ’北山啦’, ’age’: 20}, {’name’: ’張三’, ’age’: 30}, {’name’: ’里斯’, ’age’: 17}]}<class ’str’>

上面的例子中,雖然看起來數(shù)據(jù)沒有發(fā)生變化,但其實(shí)它們的數(shù)據(jù)類型已經(jīng)發(fā)生了本質(zhì)的改變:將字典數(shù)據(jù)類型的data,轉(zhuǎn)換成了str類型,然后我們就可以將這個(gè)str類型的數(shù)據(jù)轉(zhuǎn)換成流,在網(wǎng)絡(luò)上進(jìn)行傳輸或者寫入到文件等。

import jsondata = { 'students': [ { 'name':'北山啦' , 'age':20 }, { 'name':'張三' , 'age':30 }, { 'name':'里斯' , 'age':17 } ]}print(type(data))print(data)json_str = json.dumps(data, separators=(’>>’,’::’), indent=2)print(json_str)

<class ’dict’>{’students’: [{’name’: ’北山啦’, ’age’: 20}, {’name’: ’張三’, ’age’: 30}, {’name’: ’里斯’, ’age’: 17}]}{ 'students'::[ { 'name'::'u5317u5c71u5566'>> 'age'::20 }>> { 'name'::'u5f20u4e09'>> 'age'::30 }>> { 'name'::'u91ccu65af'>> 'age'::17 } ]}

將data寫入txt文件中

import jsondata = { 'students': [ { 'name':'北山啦' , 'age':20 }, { 'name':'張三' , 'age':30 }, { 'name':'里斯' , 'age':17 } ]}with open('students.txt','w') as fp: json.dump(data, fp, ensure_ascii=False) print('finish')

finish

這樣就將data寫入了students.txt,看看是不是已經(jīng)將數(shù)據(jù)寫進(jìn)去了。

3.2 反系列化

從JSON數(shù)據(jù)轉(zhuǎn)換到Python類型數(shù)據(jù),叫反系列化。可以通過loads()/load()這兩個(gè)方法來完成。

import jsonwith open('students.txt') as fp: data = json.load(fp) '''取出字典key為students的數(shù)據(jù), 得到一個(gè)list,再?gòu)倪@個(gè)list中取第一個(gè)數(shù)據(jù)''' print(data[’students’][0])

{’name’: ’北山啦’, ’age’: 20}

parse_int參數(shù)

默認(rèn)值為None,如果指定了parse_int,用來對(duì)JSON int字符串進(jìn)行解碼,這可以用于為JSON整數(shù)使用另一種數(shù)據(jù)類型或解析器。

parse_int參數(shù),這里我們簡(jiǎn)單將其指定為float類型。

import jsonwith open('students.txt') as fp: data = json.load(fp, parse_int = float) print(data)

{’students’: [{’name’: ’北山啦’, ’age’: 20.0}, {’name’: ’張三’, ’age’: 30.0}, {’name’: ’里斯’, ’age’: 17.0}]}

可以看到,age原來是整數(shù)類型,通過parse_int已經(jīng)被轉(zhuǎn)換成了float類型。

object_hook

默認(rèn)值為None,object_hook是一個(gè)可選函數(shù),此功能可用于實(shí)現(xiàn)自定義解碼器。指定一個(gè)函數(shù),該函數(shù)負(fù)責(zé)把反序列化后的基本類型對(duì)象轉(zhuǎn)換成自定義類型的對(duì)象。

def fromJSON(dct): # 這里會(huì)對(duì)所有的字典數(shù)據(jù)類型都進(jìn)行遍歷 if isinstance(dct, dict) and ’students’ in dct: return dct[’students’] else: return Student(dct[’name’], dct[’age’])import jsonwith open('students.txt') as fp: data = json.load(fp, object_hook=fromJSON) print(data)

[姓名: 北山啦, 年齡: 20, 姓名: 張三, 年齡: 30, 姓名: 里斯, 年齡: 17]

總結(jié)

到此這篇關(guān)于Python解析JSON對(duì)象的文章就介紹到這了,更多相關(guān)Python解析JSON對(duì)象內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 土壤养分检测仪_肥料养分检测仪_土壤水分检测仪-山东莱恩德仪器 大型多片锯,圆木多片锯,方木多片锯,板材多片锯-祥富机械有限公司 | EFM 022静电场测试仪-套帽式风量计-静电平板监测器-上海民仪电子有限公司 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 国产离子色谱仪,红外分光测油仪,自动烟尘烟气测试仪-青岛埃仑通用科技有限公司 | 广州物流公司_广州货运公司_广州回程车运输 - 万信物流 | 隔离变压器-伺服变压器--输入输出电抗器-深圳市德而沃电气有限公司 | 破碎机锤头_合金耐磨锤头_郑州宇耐机械工程技术有限公司 | 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 开锐教育-学历提升-职称评定-职业资格培训-积分入户 | 煤矿支护网片_矿用勾花菱形网_缝管式_管缝式锚杆-邯郸市永年区志涛工矿配件有限公司 | 罗茨真空机组,立式无油往复真空泵,2BV水环真空泵-力侨真空科技 | 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 范秘书_懂你的范文小秘书| 微动开关厂家-东莞市德沃电子科技有限公司 | 快速卷帘门_硬质快速卷帘门-西朗门业| uv固化机-丝印uv机-工业烤箱-五金蚀刻机-分拣输送机 - 保定市丰辉机械设备制造有限公司 | 南京和瑞包装有限公司| 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | 振动筛,震动筛,圆形振动筛,振动筛价格,振动筛厂家-新乡巨宝机电 蒸汽热收缩机_蒸汽发生器_塑封机_包膜机_封切收缩机_热收缩包装机_真空机_全自动打包机_捆扎机_封箱机-东莞市中堡智能科技有限公司 | 家乐事净水器官网-净水器厂家「官方」 | 深圳市八百通智能技术有限公司官方网站 | MOOG伺服阀维修,ATOS比例流量阀维修,伺服阀维修-上海纽顿液压设备有限公司 | 河北中仪伟创试验仪器有限公司是专业生产沥青,土工,水泥,混凝土等试验仪器的厂家,咨询电话:13373070969 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 中天寰创-内蒙古钢结构厂家|门式刚架|钢结构桁架|钢结构框架|包头钢结构煤棚 | 上海公司注册-代理记账-招投标审计-上海昆仑扇财税咨询有限公司 上海冠顶工业设备有限公司-隧道炉,烘箱,UV固化机,涂装设备,高温炉,工业机器人生产厂家 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 数显恒温油浴-电砂浴-高温油浴振荡器-常州迈科诺仪器有限公司 | 不锈钢复合板|钛复合板|金属复合板|南钢集团安徽金元素复合材料有限公司-官网 | 紧急切断阀_气动切断阀_不锈钢阀门_截止阀_球阀_蝶阀_闸阀-上海上兆阀门制造有限公司 | 立刷【微电签pos机】-嘉联支付立刷运营中心 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 酒精检测棒,数显温湿度计,酒安酒精测试仪,酒精检测仪,呼气式酒精检测仪-郑州欧诺仪器有限公司 | 苏州注册公司_苏州代理记账_苏州工商注册_苏州代办公司-恒佳财税 | 挤奶设备过滤纸,牛奶过滤纸,挤奶机过滤袋-济南蓝贝尔工贸有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 校车_校车价格_19座幼儿园校车_幼儿园校车_大鼻子校车 | 校服厂家,英伦校服定做工厂,园服生产定制厂商-东莞市艾咪天使校服 | 建筑资质代办-建筑企业资质代办机构-建筑资质代办公司 | 网站建设-网站制作-网站设计-网站开发定制公司-网站SEO优化推广-咏熠软件 |