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

摘要:您知道如何從在線API傳輸數據或將各類數據存儲到本地計算機嗎?您已經將本身沉浸於JSON的一種方式中,JSON表示Java Script Object Notation。它是一種著名的流行數據格式,用於表示半結構化數據。讓咱們詳細瞭解Python JSON。html

本文將討論如下方面:python

  • Python JSON簡介
  • 如何在Python中讀取JSON文件
  • 解析中
    • 從Python轉換爲JSON
    • 從JSON轉換爲Python
  • 熊貓解析JSON
  • JSON序列化[編碼]
  • 漂亮的印刷
  • JSON的反序列化[解碼]
  • 編碼示範

Python JSON簡介:

JSON表明JAVA小號script objectn浮選是存儲在一個有組織的和容易的方式信息的方式。在瀏覽器和服務器之間交換數據時,數據必須爲文本形式。json

若是您想知道它是不是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": ["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的解析,序列化和反序列化有關的全部概念感到清楚。

 本文分享自華爲雲社區《從零開始學python | 什麼是Python JSON以及如何實現?》,原文做者:Yuchuan 。

 

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

相關文章
相關標籤/搜索