最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python對(duì)JSON格式化的多種方法

 更新時(shí)間:2025年09月03日 09:04:36   作者:detayun  
JSON作為Web開(kāi)發(fā)中最常用的數(shù)據(jù)交換格式,其可讀性和格式規(guī)范性對(duì)開(kāi)發(fā)調(diào)試至關(guān)重要,本文將詳細(xì)介紹Python中格式化JSON的多種方法,幫助開(kāi)發(fā)者高效處理JSON數(shù)據(jù),需要的朋友可以參考下

引言

JSON作為Web開(kāi)發(fā)中最常用的數(shù)據(jù)交換格式,其可讀性和格式規(guī)范性對(duì)開(kāi)發(fā)調(diào)試至關(guān)重要。本文將詳細(xì)介紹Python中格式化JSON的多種方法,幫助開(kāi)發(fā)者高效處理JSON數(shù)據(jù)。

一、基礎(chǔ)格式化方法

1. 使用標(biāo)準(zhǔn)庫(kù)json模塊

import json

data = {"name": "張三", "age": 25, "skills": ["Python", "Java"]}

# 基本格式化
formatted_json = json.dumps(data, indent=4, ensure_ascii=False)
print(formatted_json)

# 輸出結(jié)果:
"""
{
    "name": "張三",
    "age": 25,
    "skills": [
        "Python",
        "Java"
    ]
}
"""

關(guān)鍵參數(shù)說(shuō)明:

  • indent:縮進(jìn)空格數(shù)(推薦2或4)
  • ensure_ascii:設(shè)為False可顯示中文
  • sort_keys:設(shè)為T(mén)rue可按鍵名排序

2. 緊湊格式化

compact_json = json.dumps(data, separators=(',', ':'))
# 輸出:{"name":"張三","age":25,"skills":["Python","Java"]}

二、高級(jí)格式化技巧

1. 自定義格式處理器

def pretty_json(obj):
    return json.dumps(obj, 
                    indent=2,
                    sort_keys=True,
                    ensure_ascii=False,
                    separators=(',', ': '))

print(pretty_json(data))

2. 處理復(fù)雜數(shù)據(jù)結(jié)構(gòu)

from datetime import datetime

complex_data = {
    "timestamp": datetime.now(),
    "nested": {"a": 1, "b": [1, 2, 3]}
}

# 自定義序列化
def default_serializer(obj):
    if isinstance(obj, datetime):
        return obj.isoformat()
    raise TypeError("Type not serializable")

print(json.dumps(complex_data, default=default_serializer, indent=2))

三、文件操作

1. 寫(xiě)入格式化JSON文件

with open('data.json', 'w', encoding='utf-8') as f:
    json.dump(data, f, indent=4, ensure_ascii=False)

2. 讀取并格式化

with open('data.json', 'r', encoding='utf-8') as f:
    loaded_data = json.load(f)
    print(json.dumps(loaded_data, indent=2))

四、命令行工具

Python自帶JSON格式化工具:

# 格式化文件
python -m json.tool input.json output.json

# 管道操作
echo '{"name":"李四","age":30}' | python -m json.tool

五、第三方庫(kù)推薦

  1. json5(支持注釋等擴(kuò)展語(yǔ)法)
import json5

data = json5.loads("""{
    // 注釋
    name: "王五",
    age: 28
}""")
  1. demjson(容錯(cuò)性更強(qiáng))
import demjson

# 自動(dòng)修復(fù)格式錯(cuò)誤
data = demjson.decode("{'key': 'value',}")

六、常見(jiàn)問(wèn)題解決

  1. 中文亂碼問(wèn)題
# 錯(cuò)誤寫(xiě)法
json.dumps(data)  # 中文會(huì)變成Unicode轉(zhuǎn)義

# 正確寫(xiě)法
json.dumps(data, ensure_ascii=False)
  1. 日期格式處理
from datetime import datetime

def datetime_handler(x):
    if isinstance(x, datetime):
        return x.isoformat()
    raise TypeError("Unknown type")

json.dumps(data, default=datetime_handler)
  1. 大數(shù)據(jù)量格式化優(yōu)化
# 使用ijson進(jìn)行流式處理
import ijson

with open('large.json', 'rb') as f:
    for item in ijson.items(f, 'item'):
        print(json.dumps(item, indent=2))

七、格式化驗(yàn)證

def validate_json(json_str):
    try:
        json.loads(json_str)
        return True
    except json.JSONDecodeError as e:
        print(f"格式錯(cuò)誤:{str(e)}")
        return False

總結(jié)

Python提供了多種JSON格式化方案:

  1. 基礎(chǔ)需求使用標(biāo)準(zhǔn)庫(kù)json模塊
  2. 復(fù)雜場(chǎng)景選擇json5demjson
  3. 大數(shù)據(jù)量使用流式處理庫(kù)ijson
  4. 命令行操作使用python -m json.tool

根據(jù)具體需求選擇合適的方法,合理設(shè)置indent、sort_keys等參數(shù),可以顯著提升JSON數(shù)據(jù)的可讀性和可維護(hù)性。建議始終設(shè)置ensure_ascii=False以獲得更好的中文顯示效果。

以上就是Python對(duì)JSON格式化的多種方法的詳細(xì)內(nèi)容,更多關(guān)于Python對(duì)JSON格式化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python 內(nèi)置函數(shù)complex詳解

    Python 內(nèi)置函數(shù)complex詳解

    這篇文章主要介紹了Python 內(nèi)置函數(shù)complex詳解的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • pytorch的Backward過(guò)程用時(shí)太長(zhǎng)問(wèn)題及解決

    pytorch的Backward過(guò)程用時(shí)太長(zhǎng)問(wèn)題及解決

    這篇文章主要介紹了pytorch的Backward過(guò)程用時(shí)太長(zhǎng)問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 利用Python實(shí)現(xiàn)網(wǎng)絡(luò)運(yùn)維自動(dòng)化的實(shí)戰(zhàn)案例

    利用Python實(shí)現(xiàn)網(wǎng)絡(luò)運(yùn)維自動(dòng)化的實(shí)戰(zhàn)案例

    Python作為一種簡(jiǎn)潔而強(qiáng)大的編程語(yǔ)言,已經(jīng)成為網(wǎng)絡(luò)運(yùn)維自動(dòng)化的熱門(mén)選擇,本文將介紹如何利用Python實(shí)現(xiàn)網(wǎng)絡(luò)設(shè)備配置管理、監(jiān)控和故障排除等自動(dòng)化任務(wù),并提供代碼示例,需要的朋友可以參考下
    2024-03-03
  • Python利用openpyxl類(lèi)實(shí)現(xiàn)在Excel中繪制樂(lè)高圖案

    Python利用openpyxl類(lèi)實(shí)現(xiàn)在Excel中繪制樂(lè)高圖案

    在商場(chǎng)看到一個(gè)超級(jí)瑪麗的樂(lè)高圖,感覺(jué)使用excel的顏色填充也能畫(huà)出來(lái)。所以本文將借助openpyxl類(lèi)實(shí)現(xiàn)在Excel中繪制樂(lè)高圖案,需要的可以參考一下
    2022-12-12
  • Python驅(qū)動(dòng)ansys執(zhí)行apdl文件的代碼示例

    Python驅(qū)動(dòng)ansys執(zhí)行apdl文件的代碼示例

    在Python中驅(qū)動(dòng)ANSYS執(zhí)行APDL(ANSYS Parametric Design Language)文件,可以通過(guò)使用subprocess模塊來(lái)調(diào)用ANSYS的可執(zhí)行文件,并傳遞APDL文件作為參數(shù),本文給大家介紹了一個(gè)詳細(xì)的代碼示例,需要的朋友可以參考下
    2024-11-11
  • Python高級(jí)應(yīng)用探索之元編程和并發(fā)編程詳解

    Python高級(jí)應(yīng)用探索之元編程和并發(fā)編程詳解

    Python作為一種簡(jiǎn)單易用且功能強(qiáng)大的編程語(yǔ)言,廣泛應(yīng)用于各個(gè)領(lǐng)域,本文主要來(lái)和大家一起探索一下Python中的優(yōu)化技巧、元編程和并發(fā)編程,希望對(duì)大家有所幫助
    2023-11-11
  • Python爬蟲(chóng)程序架構(gòu)和運(yùn)行流程原理解析

    Python爬蟲(chóng)程序架構(gòu)和運(yùn)行流程原理解析

    這篇文章主要介紹了Python爬蟲(chóng)程序架構(gòu)和運(yùn)行流程原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03
  • Python中requests庫(kù)的基本概念與具體使用方法

    Python中requests庫(kù)的基本概念與具體使用方法

    requests庫(kù)是用python編寫(xiě)的基于urllib,requests唯一的一個(gè)非轉(zhuǎn)基因的Python HTTP庫(kù),下面這篇文章主要給大家介紹了關(guān)于Python中requests庫(kù)的基本概念與具體使用方法,需要的朋友可以參考下
    2022-08-08
  • 詳解如何在Pandas中刪除常量列

    詳解如何在Pandas中刪除常量列

    常數(shù)列不提供可變性,這意味著它們無(wú)助于區(qū)分不同的數(shù)據(jù)點(diǎn),在許多機(jī)器學(xué)習(xí)模型中,這些列會(huì)引入冗余或不相關(guān)的數(shù)據(jù),從而對(duì)性能產(chǎn)生負(fù)面影響,因此,通常必須刪除常量列,所以本文我們將探索如何使用Python識(shí)別和刪除Pandas DataFrame中的常量列,需要的朋友可以參考下
    2025-03-03
  • python xxx.py 和 python -m xxx兩種執(zhí)行方式的使用場(chǎng)景和問(wèn)題解決

    python xxx.py 和 python -m xxx兩種執(zhí)行方式

    本文主要介紹了python xxx.py 和 python -m xxx兩種執(zhí)行方式的使用場(chǎng)景和問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-12-12

最新評(píng)論

灵山县| 津市市| 通州区| 九龙坡区| 广州市| 辛集市| 南郑县| 周宁县| 汉中市| 霞浦县| 定陶县| 吴堡县| 托里县| 弥勒县| 隆化县| 同江市| 龙江县| 依兰县| 勃利县| 饶河县| 民丰县| 武隆县| 浮梁县| 鄂托克旗| 海门市| 马公市| 贞丰县| 和平县| 象州县| 庆云县| 大宁县| 黎平县| 肥西县| 阿拉善右旗| 大冶市| 漠河县| 武鸣县| 遵化市| 钟祥市| 伽师县| 如皋市|