您知道如何從在線API傳輸數(shù)據(jù)或?qū)⒏鞣N數(shù)據(jù)存儲到本地計算機嗎?
您已經(jīng)將自己沉浸于JSON的一種方式中,JSON表示Java Script Object Notation。它是一種著名的流行數(shù)據(jù)格式,用于表示半結構化數(shù)據(jù)。讓我們詳細了解Python JSON。
本文將討論以下方面:
Python JSON簡介
如何在Python中讀取JSON文件
解析中
從Python轉(zhuǎn)換為JSON
從JSON轉(zhuǎn)換為Python
熊貓解析JSON
JSON序列化[編碼]
漂亮的印刷J
SON的反序列化[解碼]
編碼示范
Python JSON簡介:
JSON代表JAVA小號script objectn浮選是存儲在一個有組織的和容易的方式信息的方式。在瀏覽器和服務器之間交換數(shù)據(jù)時,數(shù)據(jù)必須為文本形式。
如果您想知道它是否是JavaScript?那么答案是否定的。它是一個由文本組成的腳本,用于以人類和機器可讀格式存儲和傳輸數(shù)據(jù)。它是一種受JavaScript啟發(fā)的小型輕量數(shù)據(jù)格式,通常以文本或字符串格式使用。JSON數(shù)據(jù)包幾乎等同于python字典。現(xiàn)在,您一定想知道。
如何在Python中讀取JSON文件?
問題的答案是,您必須導入JSON模塊,該模塊通常將Python數(shù)據(jù)類型轉(zhuǎn)換為JSON字符串文件。它由直接從JSON文件讀取和寫入的JSON函數(shù)組成。Python具有內(nèi)置的JSON包,并且是標準庫的一部分,因此您無需安裝它。
例子:
import json
現(xiàn)在您已經(jīng)了解了Python中的JSON,下面讓我們更深入地分析Parsing。
解析:JSON庫可以從字符串或文件中解析JSON 。它還可以將JSON解析到Python字典或列表中,反之亦然。解析通常分為兩個階段:
從JSON轉(zhuǎn)換為Python
從Python轉(zhuǎn)換為JSON
讓我們更好地了解這兩個階段。
從JSON轉(zhuǎn)換為Python:
您可以使用以下方法將JSON字符串轉(zhuǎn)換為
Python json.loads()。
例子:
import jsonpeople_string = ‘’‘{“people”:[{“emp_name”: “John smith”,“emp_no.”: “924367-567-23”,“emp_email”: [“[email protected]”],“has_license”: “false”},{“emp_name”: “harshit kant”,“emp_number”: “560-555-5153”,“emp_email”: “null”,“has_license”: “true”}]}’‘’data = json.loads(people_string)print(data)
輸出:
從上面的輸出中可以看到,它已經(jīng)打印了Python字典。讓我們打印數(shù)據(jù)類型以更好地理解。
例子:
import jsonpeople_string = ‘’‘{“people”:[{“emp_name”: “John smith”,“emp_no.”: “924367-567-23”,“emp_email”: [“[email protected]”],“has_license”: “false”},{“emp_name”: “harshit kant”,“emp_number”: “560-555-5153”,“emp_email”: “null”,“has_license”: “true”}]}’‘’data = json.loads(people_string)print(type(data)) #prints the datatype
輸出:
《class‘dict’》
現(xiàn)在,您已經(jīng)熟悉一個轉(zhuǎn)換,讓我們在第二階段看看另一種轉(zhuǎn)換類型。
從Python轉(zhuǎn)換為JSON:
通過使用json.dumps()。 下面給出的示例,可以將Python對象轉(zhuǎn)換為JSON字符串:
例子:
import jsonpeople_string = ‘’‘{“people”:[{“emp_name”: “John smith”,“emp_no.”: “924367-567-23”,“emp_email”: [“[email protected]”],“has_license”: “false”},{“emp_name”: “harshit kant”,“emp_no.”: “560-555-5153”,“emp_email”: “null”,“has_license”: “true”}]}’‘’data = json.loads(people_string)new_string = json.dumps(data)print(new_string)
輸出:
輸出將是JSON字符串類型。我已經(jīng)在JSON到Python的轉(zhuǎn)換中演示了數(shù)據(jù)類型,將遵循相同的過程來打印數(shù)據(jù)類型。
讓我們繼續(xù)前進,看看Pandas如何解析JSON。
熊貓解析JSON:
可以通過以下步驟將JSON字符串解析為pandas Dataframe:
以下通用結構可用于將JSON字符串加載到DataFrame中
import pandas as pd
pd.read_json(r‘Path where you saved the JSON fileFile Name.json’)
準備JSON字符串。
創(chuàng)建一個我們正在使用的JSON文件nobel_prize.json。
將JSON文件加載到pandas DataFrame中。
下面實現(xiàn)的代碼將我的JSON文件加載到DataFrame中。
import pandas as pdimport json
with open(r‘C:UsersHarshit_KantDesktopnobel.prize.json’) as f: data = json.load(f)print (data)
df = pd.DataFrame
print(df)
輸出:
繼續(xù)前進,讓我們看看如何在Python中序列化JSON。
JSON序列化[編碼]:
序列化JSON只是意味著您正在編碼JSON。它將給定的Python數(shù)據(jù)結構(ex:dict)轉(zhuǎn)換為其有效的JSON對象。為了處理文件中的數(shù)據(jù)流,Python中的JSON庫使用dump()和dumps()方法,該方法進行轉(zhuǎn)換并使其易于將數(shù)據(jù)寫入文件中。
下表是說明將Python數(shù)據(jù)類型轉(zhuǎn)換為各自的JSON類型的表格。
要記住的要點:
dump() –將數(shù)據(jù)轉(zhuǎn)換為JSON文件
dumps() –將數(shù)據(jù)轉(zhuǎn)換為JSON字符串
load() –將JSON文件轉(zhuǎn)換為Python對象
loads()–將JSON字符串的對象轉(zhuǎn)換為Python對象
漂亮的印刷:
Pretty Printing負責代碼對齊并使其以人類可讀的格式進行。讓我們看下面的示例,其中我傳遞了兩個參數(shù)‘sort_keys’,這些參數(shù)始終返回布爾True值和‘indent’空格。
例子:
import jsonpeople_string = ‘’‘{“people”:[{ “emp_name”: “John smith”, “emp_no.”: “924367-567-23”, “emp_email”: [“[email protected]”], “has_license”: “false”},{ “emp_name”: “harshit kant”, “emp_no.”: “560-555-5153”, “emp_email”: “null”, “has_license”: “true”}]}’‘’
data = json.loads(people_string)new_string = json.dumps(data, sort_keys=True, indent=3)print(new_string)
輸出:
繼續(xù)進行Python JSON教程,讓我們了解JSON的反序列化。
JSON的反序列化[Decode]:
JSON的反序列化與序列化完全相反,也就是說,這意味著您正在解碼JSON。它將通過使用執(zhí)行轉(zhuǎn)換的load()和load()方法將給定的JSON字符串轉(zhuǎn)換為Python對象。
下表是說明將JSON數(shù)據(jù)類型轉(zhuǎn)換為其相應的Python類型的表格。
繼續(xù)進行“ Python JSON”教程。我將通過編碼的角度向您展示一個同時進行序列化和反序列化的實時示例。
編碼演示:在此編碼演示中,我將使用此處給出的JSON數(shù)據(jù)集,稱為“諾貝爾獎” 。您將學習如何通過JSON文件進行序列化和反序列化。
示例(JSON數(shù)據(jù)集的序列化):
import json
with open(‘nobel_prize.json.html’) as f: data = json.load(f)
with open(‘new_nobel_prize.json.html’) as f: json.dump(data,f,indent=2)
輸出:Python代碼已成功編譯,并創(chuàng)建了一個新文件“ new_nobel_prize.json”,將從現(xiàn)有文件“ nobel_prize.json”中轉(zhuǎn)儲數(shù)據(jù)。
示例(JSON數(shù)據(jù)集的反序列化):
import json
with open(‘nobel_prize.json.html’) as f:data = json.load(f)
for nobel_prize in data[‘prizes’]:print(nobel_prize[‘year’],nobel_prize[‘category’])
輸出:該代碼段顯示了從JSON文件到其相應的Python對象的更改。
希望您對與JSON的解析,序列化和反序列化有關的所有概念感到清楚。
原文標題:從零開始學python | 什么是Python JSON?
文章出處:【微信公眾號:華為開發(fā)者社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
責任編輯:haq
-
python
+關注
關注
56文章
4827瀏覽量
86706
原文標題:從零開始學python | 什么是Python JSON?
文章出處:【微信號:Huawei_Developer,微信公眾號:華為開發(fā)者社區(qū)】歡迎添加關注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
工業(yè)計算機與商用計算機的區(qū)別有哪些

云端超級計算機使用教程
工業(yè)中使用哪種計算機?

量子計算機與普通計算機工作原理的區(qū)別

工業(yè)計算機類型介紹

ROM對計算機性能的影響
教程:ARMxy工業(yè)計算機上Node-RED連接本地MySQL的方法

評論