成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python處理Json數據格式的常見的20種小技巧

開發 前端
20 種處理 JSON 數據的常見小技巧,涵蓋了從基本的序列化和反序列化到高級的自定義編碼和解碼。通過這些技巧,你可以更高效、更靈活地處理 JSON 數據。

處理 JSON 數據是 Python 編程中非常常見的任務。Python 提供了 json 模塊來方便地處理 JSON 數據。以下是 20 種處理 JSON 數據的常見小技巧,幫助你更高效地完成任務。

1. 導入 json 模塊

首先,確保導入 json 模塊。

import json

2. 將 Python 對象轉換為 JSON 字符串

使用 json.dumps() 方法將 Python 對象轉換為 JSON 字符串。

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False
}
json_str = json.dumps(data)
print(json_str)  # 輸出: {"name": "Alice", "age": 30, "is_student": false}

3. 將 JSON 字符串轉換為 Python 對象

使用 json.loads() 方法將 JSON 字符串轉換為 Python 對象。

json_str = '{"name": "Alice", "age": 30, "is_student": false}'
data = json.loads(json_str)
print(data)  # 輸出: {'name': 'Alice', 'age': 30, 'is_student': False}

4. 讀取 JSON 文件

使用 json.load() 方法從文件中讀取 JSON 數據。

with open('data.json', 'r') as file:
    data = json.load(file)
print(data)

5. 寫入 JSON 文件

使用 json.dump() 方法將 Python 對象寫入 JSON 文件。

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False
}
with open('data.json', 'w') as file:
    json.dump(data, file)

6. 格式化 JSON 輸出

使用 indent 參數格式化 JSON 輸出,使其更易讀。

data = {
    "name": "Alice",
    "age": 30,
    "is_student": False
}
json_str = json.dumps(data, indent=4)
print(json_str)
# 輸出:
# {
#     "name": "Alice",
#     "age": 30,
#     "is_student": false
# }

7. 處理日期和時間

使用 json 模塊的 default 參數處理日期和時間對象。

from datetime import datetime
def json_default(value):
    if isinstance(value, datetime):
        return value.isoformat()
    raise TypeError(f"Type {type(value)} not serializable")
data = {
    "name": "Alice",
    "timestamp": datetime.now()
}
json_str = json.dumps(data, default=json_default)
print(json_str)

8. 自定義解碼器

使用 object_hook 參數自定義解碼器。

def custom_decoder(obj):
    if 'timestamp' in obj:
        obj['timestamp'] = datetime.fromisoformat(obj['timestamp'])
    return obj
json_str = '{"name": "Alice", "timestamp": "2023-10-01T12:00:00"}'
data = json.loads(json_str, object_hook=custom_decoder)
print(data)  # 輸出: {'name': 'Alice', 'timestamp': datetime.datetime(2023, 10, 1, 12, 0)}

9. 處理 Unicode

使用 ensure_ascii 參數處理 Unicode 字符。

data = {
    "name": "Alice",
    "message": "你好,世界!"
}
json_str = json.dumps(data, ensure_ascii=False)
print(json_str)  # 輸出: {"name": "Alice", "message": "你好,世界!"}

10. 處理特殊字符

使用 separators 參數處理特殊字符。

data = {
    "name": "Alice",
    "age": 30
}
json_str = json.dumps(data, separators=(',', ':'))
print(json_str)  # 輸出: {"name":"Alice","age":30}

11. 處理嵌套數據

處理嵌套的 JSON 數據。

data = {
    "name": "Alice",
    "details": {
        "age": 30,
        "is_student": False
    }
}
json_str = json.dumps(data)
print(json_str)  # 輸出: {"name": "Alice", "details": {"age": 30, "is_student": false}}

12. 處理列表

處理 JSON 列表。

data = [
    {"name": "Alice", "age": 30},
    {"name": "Bob", "age": 25}
]
json_str = json.dumps(data)
print(json_str)  # 輸出: [{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]

13. 處理空值

處理 JSON 中的 null 值。

data = {
    "name": "Alice",
    "age": None
}
json_str = json.dumps(data)
print(json_str)  # 輸出: {"name": "Alice", "age": null}

14. 處理布爾值

處理 JSON 中的布爾值。

data = {
    "name": "Alice",
    "is_student": True
}
json_str = json.dumps(data)
print(json_str)  # 輸出: {"name": "Alice", "is_student": true}

15. 處理數字

處理 JSON 中的數字。

data = {
    "name": "Alice",
    "age": 30,
    "height": 1.65
}
json_str = json.dumps(data)
print(json_str)  # 輸出: {"name": "Alice", "age": 30, "height": 1.65}

16. 處理字符串

處理 JSON 中的字符串。

data = {
    "name": "Alice",
    "message": "Hello, World!"
}
json_str = json.dumps(data)
print(json_str)  # 輸出: {"name": "Alice", "message": "Hello, World!"}

17. 處理特殊字符

處理 JSON 中的特殊字符。

data = {
    "name": "Alice",
    "message": "This is a \"quoted\" message."
}
json_str = json.dumps(data)
print(json_str)  # 輸出: {"name": "Alice", "message": "This is a \"quoted\" message."}

18. 處理異常

處理 JSON 解析異常。

json_str = '{"name": "Alice", "age": 30, "is_student": false}'
try:
    data = json.loads(json_str)
    print(data)
except json.JSONDecodeError as e:
    print(f"JSON 解析錯誤: {e}")

19. 處理大文件

處理大文件時,使用流式處理。

import json
def read_large_json_file(file_path):
    with open(file_path, 'r') as file:
        for line in file:
            data = json.loads(line)
            yield data
for item in read_large_json_file('large_data.json'):
    print(item)

20. 處理 JSON 數組

處理 JSON 數組中的數據。

json_str = '[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]'
data = json.loads(json_str)
for item in data:
    print(item)
# 輸出:
# {'name': 'Alice', 'age': 30}
# {'name': 'Bob', 'age': 25}

總結

以上是 20 種處理 JSON 數據的常見小技巧,涵蓋了從基本的序列化和反序列化到高級的自定義編碼和解碼。通過這些技巧,你可以更高效、更靈活地處理 JSON 數據。

責任編輯:武曉燕 來源: 測試開發學習交流
相關推薦

2019-07-22 08:49:37

PythonJSON編程語言

2024-04-15 13:13:04

PythonJSON

2010-01-06 14:04:55

Json數據格式

2020-09-28 10:58:26

Google AI技術

2014-08-12 10:15:42

數據格式JSONXML

2009-09-07 19:02:07

JSON是什么

2010-01-06 13:23:20

JSON數據格式

2010-02-06 14:32:45

ibmdw

2009-04-13 11:20:46

IBMdWWeb

2013-03-27 10:51:44

iOSjson解析網絡交互數據格式解析

2011-04-11 09:48:59

AjaxWEB服務

2024-12-19 00:12:02

APIJSON數據

2009-03-09 09:34:56

AjaxHTMLJavaScript

2016-12-20 16:40:13

CarbonData數據存儲大數據

2017-01-05 09:48:51

大數據數據格式生態

2019-11-20 12:03:42

Python數據爬蟲

2018-09-18 11:16:11

MapReduceXML大數據

2017-03-27 14:58:03

MapReduce數據類型數據格式

2019-07-04 19:06:04

技術人工智能大數據

2016-11-10 13:00:32

網絡傳輸協議pythonhttp
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产成人综合亚洲欧美94在线 | 自拍中文字幕 | 午夜男人天堂 | 韩国精品在线 | 亚洲欧美在线观看 | 亚洲高清视频一区二区 | 日韩精品成人一区二区三区视频 | 99精品国产一区二区三区 | 欧美极品在线播放 | 婷婷久久网 | 99国产精品久久久 | www.久久精品视频 | 91视频大全 | 一区二区三区免费网站 | 国产精品1区2区3区 一区中文字幕 | 亚洲自拍一区在线观看 | 色婷婷综合网站 | 99在线免费视频 | 毛片视频免费观看 | 欧美一区二区三区在线 | 一区二区三区中文字幕 | 亚洲国产精品99久久久久久久久 | 久草视频观看 | 欧美aⅴ在线观看 | 久久久国产精品视频 | 久久精品国产一区二区电影 | 国产精品久久久久久福利一牛影视 | 久久久久久久亚洲精品 | 欧美精品一区二区三区蜜桃视频 | 国产精品黄视频 | 天天草天天干天天 | 337p日本欧洲亚洲大胆精蜜臀 | 亚洲视频精品 | 亚洲啊v在线| 久日精品| 国产最新网址 | 亚洲美女视频 | 日韩一二三区视频 | 亚洲国产视频一区 | 热久色 | 中文字幕 在线观看 |