從零開始學python | 什麼是Python JSON?

2021-04-07 12:00:08

本文分享自華為雲社群《從零開始學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字典或列表中,反之亦然。解析通常分為兩個階段:

  1. 從JSON轉換為Python
  2. 從Python轉換為JSON

讓我們更好地瞭解這兩個階段。

從JSON轉換為Python:

您可以使用以下方法將JSON字串轉換為Python json.loads(). :

例子:

import json
people_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)

輸出:

從上面的輸出中可以看到,它已經列印了Python字典。讓我們列印資料型別以更好地理解。

例子:

import json
people_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'>

現在,您已經熟悉一個轉換,讓我們在第二階段看看另一種轉換型別。

從Python轉換為JSON:

通過使用json.dumps(). 下面給出的範例,可以將Python物件轉換為JSON字串:

例子:

import json
people_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字串型別。我已經在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": ["[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)

輸出:

繼續進行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的解析,序列化和反序列化有關的所有概念感到清楚。

點選關注,第一時間瞭解華為雲新鮮技術~