本文分享自華為云社區《從零開始學python | 什么是Python JSON以及如何實作?》,原文作者:Yuchuan ,
您知道如何從在線API傳輸資料或將各種資料存盤到本地計算機嗎?您已經將自己沉浸于JSON的一種方式中,JSON表示Java Script Object Notation,它是一種著名的流行資料格式,用于表示半結構化資料,讓我們詳細了解Python JSON,
本文將討論以下方面:
- Python JSON簡介
- 如何在Python中讀取JSON檔案
- 決議中
- 從Python轉換為JSON
- 從JSON轉換為Python
- 熊貓決議JSON
- JSON序列化[編碼]
- 漂亮的印刷
- JSON的反序列化[解碼]
- 編碼示范
Python JSON簡介:
JSON代表JAVA小號script objectn浮選是存盤在一個有組織的和容易的方式資訊的方式,在瀏覽器和服務器之間交換資料時,資料必須為文本形式,

如果您想知道它是否是JavaScript?那么答案是否定的,它是一個由文本組成的腳本,用于以人類和機器可讀格式存盤和傳輸資料,它是一種受JavaScript啟發的小型輕量資料格式,通常以文本或字串格式使用,JSON資料包幾乎等同于python字典,現在,您一定想知道,
如何在Python中讀取JSON檔案?
問題的答案是,您必須匯入JSON模塊,該模塊通常將Python資料型別轉換為JSON字串檔案,它由直接從JSON檔案讀取和寫入的JSON函陣列成,Python具有內置的JSON包,并且是標準庫的一部分,因此您無需安裝它,
例子:
import json
現在您已經了解了Python中的JSON,下面讓我們更深入地分析Parsing,
決議:
JSON庫可以從字串或檔案中決議JSON ,它還可以將JSON決議到Python字典或串列中,反之亦然,決議通常分為兩個階段:
- 從JSON轉換為Python
- 從Python轉換為JSON
讓我們更好地了解這兩個階段,
從JSON轉換為Python:
您可以使用以下方法將JSON字串轉換為Python json.loads(). :
例子:
import json
people_string = '''
{
"people":[
{
"emp_name": "John smith",
"emp_no.": "924367-567-23",
"emp_email": ["johnsmith@dummyemail.com"],
"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)
輸出:

從上面的輸出中可以看到,它已經列印了Python字典,讓我們列印資料型別以更好地理解,
例子:
import json
people_string = '''
{
"people":[
{
"emp_name": "John smith",
"emp_no.": "924367-567-23",
"emp_email": ["johnsmith@dummyemail.com"],
"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'>
現在,您已經熟悉一個轉換,讓我們在第二階段看看另一種轉換型別,
從Python轉換為JSON:
通過使用json.dumps(). 下面給出的示例,可以將Python物件轉換為JSON字串:
例子:
import json
people_string = '''
{
"people":[
{
"emp_name": "John smith",
"emp_no.": "924367-567-23",
"emp_email": ["johnsmith@dummyemail.com"],
"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字串型別,我已經在JSON到Python的轉換中演示了資料型別,將遵循相同的程序來列印資料型別,
讓我們繼續前進,看看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字串,
- 創建一個我們正在使用的JSON檔案nobel_prize.json,
- 將JSON檔案加載到pandas DataFrame中,
下面實作的代碼將我的JSON檔案加載到DataFrame中,
import pandas as pd
import json
with open(r'C:UsersHarshit_KantDesktopnobel.prize.json') as f:
data = json.load(f)
print (data)
df = pd.DataFrame
print(df)
輸出:

繼續前進,讓我們看看如何在Python中序列化JSON,
JSON序列化[編碼]:
序列化JSON只是意味著您正在編碼JSON,它將給定的Python資料結構(ex:dict)轉換為其有效的JSON物件,為了處理檔案中的資料流,Python中的JSON庫使用dump()和dumps()方法,該方法進行轉換并使其易于將資料寫入檔案中,
下表是說明將Python資料型別轉換為各自的JSON型別的表格,

要記住的要點:
dump() –將資料轉換為JSON檔案
dumps() –將資料轉換為JSON字串
load() –將JSON檔案轉換為Python物件
loads()–將JSON字串的物件轉換為Python物件
漂亮的印刷:
Pretty Printing負責代碼對齊并使其以人類可讀的格式進行,讓我們看下面的示例,其中我傳遞了兩個引數'sort_keys',這些引數始侄訓傳布爾True值和'indent'空格,
例子:
import json
people_string = '''
{
"people":[
{
"emp_name": "John smith",
"emp_no.": "924367-567-23",
"emp_email": ["johnsmith@dummyemail.com"],
"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)
輸出:

繼續進行Python JSON教程,讓我們了解JSON的反序列化,
JSON的反序列化[Decode]:
JSON的反序列化與序列化完全相反,也就是說,這意味著您正在解碼JSON,它將通過使用執行轉換的load()和load()方法將給定的JSON字串轉換為Python物件,
下表是說明將JSON資料型別轉換為其相應的Python型別的表格,

繼續進行“ Python JSON”教程,我將通過編碼的角度向您展示一個同時進行序列化和反序列化的實時示例,
編碼演示:
在此編碼演示中,我將使用此處給出的JSON資料集,稱為“諾貝爾獎” ,您將學習如何通過JSON檔案進行序列化和反序列化,
示例(JSON資料集的序列化):
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代碼已成功編譯,并創建了一個新檔案“ new_nobel_prize.json”,將從現有檔案“ nobel_prize.json”中轉儲資料,

示例(JSON資料集的反序列化):
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的決議,序列化和反序列化有關的所有概念感到清楚,
點擊關注,第一時間了解華為云新鮮技術~
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/274099.html
標籤:其他
