Python 中扁平化 JSON 物件
JSON(JavaScript 物件表示法)是一種輕量級的資料交換格式。它廣泛用於 Web 應用程式中,用於在伺服器和客戶端之間傳輸資料。JSON 資料通常以巢狀格式出現,這可能難以操作。扁平化 JSON 物件涉及將複雜的層次結構 JSON 結構轉換為更簡單的結構。當分析 JSON 資料或將其轉換為其他格式時,通常需要此過程。在本博文中,我們將探討在 Python 中扁平化 JSON 物件的過程。
語法
Python 具有內建的 JSON 模組,該模組提供用於編碼和解碼 JSON 資料的函式。
data= <json-data-here> flattened_data = flatten(data, "_")
我們使用一個名為 flatten-json 的外部庫來舉例說明。使用以下命令安裝它:
pip install flatten-json
演算法
扁平化 JSON 物件的過程包括以下步驟:
建立一個空字典來儲存扁平化的資料。
遞迴遍歷 JSON 物件。
如果值為字典,則對函式進行遞迴呼叫。
如果值不是字典,則將鍵值對新增到步驟 1 中生成的字典中。
示例
考慮以下巢狀的 JSON 物件:
{
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY"
}
}
我們可以使用以下 Python 程式碼扁平化此物件:
import json
def flatten_json(nested_json):
flattened_json = {}
def flatten(x, name=''):
if type(x) is dict:
for a in x:
flatten(x[a], name + a + '_')
else:
flattened_json[name[:-1]] = x
flatten(nested_json)
return flattened_json
nested_json = {
"name": "John",
"age": 30,
"address": {
"street": "123 Main St",
"city": "New York",
"state": "NY"
}
}
flattened_json = flatten_json(nested_json)
print(json.dumps(flattened_json, indent=4))
輸出
{
"name": "John",
"age": 30,
"address_street": "123 Main St",
"address_city": "New York",
"address_state": "NY"
}
解釋
建立 flatten json 函式,該函式接受巢狀的 JSON 物件作為輸入並生成扁平化的 JSON 物件。
為了儲存扁平化的資料,該方法生成一個名為 flattened json 的空字典。
然後定義一個名為flatten的內部函式,它接受兩個引數:name,當前鍵字首,以及 x,當前值。如果當前值為字典,則此函式將使用當前值和當前鍵字首重複呼叫。
如果當前值不是字典,則當前鍵值對將新增到 flattened json 字典中。
最後,使用輸入的 JSON 物件執行 flatten 方法並返回 flattened json 字典。
要扁平化此 JSON 物件,我們可以使用 flatten_json 庫,如下所示:
import json
from flatten_json import flatten
json_data = """
{
"id": 1,
"name": "John",
"age": 30,
"friends": [
{
"id": 2,
"name": "Jane",
"age": 28
},{
"id": 3,
"name": "Bob",
"age": 35,
"location": {
"city": "New York",
"state": "NY"
}
}
]
}
"""
# Convert JSON string to Python object
data = json.loads(json_data)
# Flatten JSON object
flattened_data = flatten(data, "_")
print(flattened_data)
輸出
{'id': 1, 'name': 'John', 'age': 30, 'friends_0_id': 2,
'friends_0_name': 'Jane', 'friends_0_age': 28, 'friends_1_id': 3,
'friends_1_name': 'Bob', 'friends_1_age': 35,
'friends_1_location_city': 'New York', 'friends_1_location_state':
'NY'}
在這種情況下,flatten 函式已扁平化 JSON 物件,並使用指定的間隔符(在本例中為下劃線 (_))分隔鍵。在組合父物件中的鍵和巢狀物件中的鍵之後,相應地設定值。
應用
扁平化 JSON 物件是 Web 開發、資料分析和機器學習中的一項常見任務。它有助於簡化資料處理、降低複雜性並使資料更易於使用。扁平化 JSON 物件的一些具體應用包括:
將 JSON 資料儲存在關係資料庫中
使用 SQL 處理 JSON 資料
使用機器學習演算法分析 JSON 資料
使用圖表和圖形視覺化 JSON 資料
結論
扁平化 JSON 物件是一種有價值的方法,可以透過它使 JSON 資料結構更簡單、更易於管理。還有其他一些額外的技術可用,而 Python 中的 flatten json 包提供了一種快速有效的方法來扁平化 JSON 資料。透過學習如何扁平化 JSON 物件,可以改進您的資料處理程式,並使您的應用程式更有效、更具可擴充套件性。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP