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

Python中利用json庫進行JSON數(shù)據(jù)處理詳解

 更新時間:2025年02月28日 10:04:46   作者:morris131  
JSON是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,同時也易于機器解析和生成,下面就跟隨小編一起來了解下如何使用Python實現(xiàn)JSON數(shù)據(jù)處理吧

Python的json庫用于處理JSON(JavaScript Object Notation)數(shù)據(jù)格式。JSON是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,同時也易于機器解析和生成。Python的json庫提供了函數(shù)來編碼(將Python對象轉(zhuǎn)換為JSON字符串)和解碼(將JSON 字符串轉(zhuǎn)換為Python對象)JSON數(shù)據(jù)。

編碼Python對象為JSON字符串

使用json.dumps()方法將Python對象編碼為JSON字符串:

import json

data = {
    "name": "Morris",
    "age": 18,
    "mail": "Morris@18.com"
}

# dict -> json
str = json.dumps(data, indent=4)
print(str)

arr = [data, data]
# list -> json
arr_str = json.dumps(arr, indent=4)
print(arr_str)

運行結(jié)果如下:

{
    "name": "Morris",
    "age": 18,
    "mail": "Morris@18.com"
}
[
    {
        "name": "Morris",
        "age": 18,
        "mail": "Morris@18.com"
    },
    {
        "name": "Morris",
        "age": 18,
        "mail": "Morris@18.com"
    }
]

indent參數(shù)用于美化輸出,使JSON字符串更具可讀性。

解碼JSON字符串為Python對象

使用json.loads()方法將JSON字符串解碼為Python對象(通常是字典或列表):

import json

object_str = """
{
    "name": "Morris",
    "age": 18,
    "mail": "Morris@18.com"
}
"""

obj = json.loads(object_str)
print(obj)

array_str = """
[
    {
        "name": "Morris",
        "age": 18,
        "mail": "Morris@18.com"
    },
    {
        "name": "Morris",
        "age": 18,
        "mail": "Morris@18.com"
    }
]
"""
arr = json.loads(array_str)
print(arr)

運行結(jié)果如下:

{'name': 'Morris', 'age': 18, 'mail': 'Morris@18.com'}
[{'name': 'Morris', 'age': 18, 'mail': 'Morris@18.com'}, {'name': 'Morris', 'age': 18, 'mail': 'Morris@18.com'}]

將Python對象寫入JSON文件

json.dump()函數(shù)也是用于將Python對象編碼成JSON格式,但它直接將編碼后的數(shù)據(jù)寫入到一個文件中,而不是返回字符串。

import json

data = {
    "name": "Morris",
    "age": 18,
    "mail": "Morris@18.com"
}

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

從文件中讀取JSON數(shù)據(jù)

使用json.load()方法從文件中讀取JSON數(shù)據(jù)并將其解析為Python對象:

import json

# json file -> dict
with open('data.json', 'r', encoding='utf-8') as f:
    obj = json.load(f)
    print(obj)

運行結(jié)果如下:

{'name': 'Morris', 'age': 18, 'mail': 'Morris@18.com'}

處理復雜對象

有時你可能需要處理包含復雜對象(如自定義類實例)的JSON數(shù)據(jù)。你可以通過實現(xiàn)自定義的編碼器和解碼器來處理這些對象。

自定義編碼器

要實現(xiàn)自定義編碼器,你需要創(chuàng)建一個繼承自json.JSONEncoder的類,并重寫default方法:

import json
from datetime import datetime

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime("%Y-%m-%d %H:%M:%S")
        # 其他自定義處理
        return json.JSONEncoder.default(self, obj)


data = {
    "name": "Morris",
    "timestamp": datetime.now()
}

json_str = CustomEncoder().encode(data)
print(json_str)

運行結(jié)果如下:

{"name": "Morris", "timestamp": "2024-12-31 14:16:55"}

自定義解碼器

要實現(xiàn)自定義解碼器,你需要創(chuàng)建一個繼承自json.JSONDecoder的類,并重寫object_hook或object_pairs_hook方法:

import json
from datetime import datetime


def datetime_parser(dct):
    for key, value in dct.items():
        if isinstance(value, str):
            try:
                # 假設日期格式是 "YYYY-MM-DD"
                dct[key] = datetime.strptime(value, "%Y-%m-%d %H:%M:%S")
            except ValueError:
                # 如果不是日期格式,則保持原樣
                pass
    return dct


json_str = """
{
    "name": "Morris",
    "timestamp": "2024-12-31 14:16:55"
}
"""

data = json.loads(json_str, object_hook=datetime_parser)
print(data)
print(data['timestamp'])

運行結(jié)果如下:

{'name': 'Morris', 'timestamp': datetime.datetime(2024, 12, 31, 14, 16, 55)}
2024-12-31 14:16:55

以上就是Python中利用json庫進行JSON數(shù)據(jù)處理詳解的詳細內(nèi)容,更多關(guān)于Python JSON數(shù)據(jù)處理的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 簡單講解Python中的數(shù)字類型及基本的數(shù)學計算

    簡單講解Python中的數(shù)字類型及基本的數(shù)學計算

    這篇文章主要介紹了Python中的數(shù)字類型及基本的數(shù)學計算,與其他語言一樣,除法相對復雜些,不過本文并未就此深入,需要的朋友可以參考下
    2016-03-03
  • 基于Python制作圖像完美超分處理工具

    基于Python制作圖像完美超分處理工具

    這篇文章主要和大家分享一個有意思的模型:RealBasicVSR。本文將利用這個模型制作一個圖像超分處理工具,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-05-05
  • 使用Python?Turtle庫帶你玩轉(zhuǎn)創(chuàng)意繪圖(畫個心,寫個花)

    使用Python?Turtle庫帶你玩轉(zhuǎn)創(chuàng)意繪圖(畫個心,寫個花)

    Python的turtle庫提供了一種有趣且易于上手的編程繪圖方式,適合初學者學習,通過本文的介紹,你將了解到如何進行畫布設置、畫筆屬性的調(diào)整、畫筆的移動與控制,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-11-11
  • python pygame入門教程

    python pygame入門教程

    pygame是python的游戲編程模塊,今天我們就來一起簡單的學習如何使用該模塊
    2021-06-06
  • Python用Pillow(PIL)進行簡單的圖像操作方法

    Python用Pillow(PIL)進行簡單的圖像操作方法

    下面小編就為大家?guī)硪黄狿ython用Pillow(PIL)進行簡單的圖像操作方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Python中單元測試的快速入門指南

    Python中單元測試的快速入門指南

    在這篇文章中,我們會深入探討Python單元測試的各個方面,包括它的基本概念、基礎(chǔ)知識、實踐方法、高級話題,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-07-07
  • window11系統(tǒng)下Python3.11安裝numpy庫超詳細教程

    window11系統(tǒng)下Python3.11安裝numpy庫超詳細教程

    這篇文章主要給大家介紹了關(guān)于window11系統(tǒng)下Python3.11安裝numpy庫的相關(guān)資料,NumPy是Python的第三方擴展包,但它并沒有包含在Python標準庫中,因此您需要單獨安裝它,需要的朋友可以參考下
    2023-12-12
  • Python函數(shù)常見幾種return返回值類型

    Python函數(shù)常見幾種return返回值類型

    本文主要介紹了Python函數(shù)常見幾種return返回值類型,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • cProfile Python性能分析工具使用詳解

    cProfile Python性能分析工具使用詳解

    這篇文章主要介紹了cProfile Python性能分析工具使用詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • 深入淺出Python中三個圖像增強庫的使用

    深入淺出Python中三個圖像增強庫的使用

    這篇文章主要帶大家了解一下Python中三個圖像增強庫的使用:Imgaug、Albumentations和SOLT,文中通過示例進行了詳細介紹,需要的可以參考一下
    2022-05-05

最新評論

将乐县| 无为县| 南汇区| 响水县| 宁化县| 云和县| 来凤县| 麦盖提县| 谷城县| 康马县| 东港市| 青岛市| 慈利县| 浑源县| 桃源县| 阿拉善盟| 凤凰县| 五大连池市| 犍为县| 东至县| 且末县| 山阴县| 柞水县| 金寨县| 乐至县| 濉溪县| 龙陵县| 祁东县| 南部县| 静海县| 平顺县| 许昌县| 湖州市| 顺平县| 恩施市| 宁陕县| 深州市| 亳州市| 来宾市| 会同县| 武邑县|