欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

編碼Python對(duì)象為JSON字符串

使用json.dumps()方法將Python對(duì)象編碼為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)

運(yùn)行結(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對(duì)象

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

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)

運(yùn)行結(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對(duì)象寫入JSON文件

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

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對(duì)象:

import json

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

運(yùn)行結(jié)果如下:

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

處理復(fù)雜對(duì)象

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

自定義編碼器

要實(shí)現(xiàn)自定義編碼器,你需要?jiǎng)?chuàng)建一個(gè)繼承自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)

運(yùn)行結(jié)果如下:

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

自定義解碼器

要實(shí)現(xiàn)自定義解碼器,你需要?jiǎng)?chuàng)建一個(gè)繼承自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:
                # 假設(shè)日期格式是 "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'])

運(yùn)行結(jié)果如下:

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

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

相關(guān)文章

  • python爬蟲實(shí)戰(zhàn)項(xiàng)目之爬取pixiv圖片

    python爬蟲實(shí)戰(zhàn)項(xiàng)目之爬取pixiv圖片

    最近決定寫個(gè)P站的爬蟲,實(shí)際操作起來(lái)確實(shí)遇到了些新問(wèn)題,通過(guò)解決也有所收獲,下面這篇文章主要給大家介紹了關(guān)于python爬蟲實(shí)戰(zhàn)項(xiàng)目之爬取pixiv圖片的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

    Python3獲取拉勾網(wǎng)招聘信息的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Python3獲取拉勾網(wǎng)招聘信息的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Python3具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解Python中的多線程

    詳解Python中的多線程

    這篇文章主要介紹了Python中的多線程,線程就是進(jìn)程中一條執(zhí)行程序的執(zhí)行路徑,一個(gè)程序至少有一條執(zhí)行路徑,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Python基于分析Ajax請(qǐng)求實(shí)現(xiàn)抓取今日頭條街拍圖集功能示例

    Python基于分析Ajax請(qǐng)求實(shí)現(xiàn)抓取今日頭條街拍圖集功能示例

    這篇文章主要介紹了Python基于分析Ajax請(qǐng)求實(shí)現(xiàn)抓取今日頭條街拍圖集功能,涉及Python針對(duì)今日頭條URL請(qǐng)求與json數(shù)據(jù)處理相關(guān)操作技巧,需要的朋友可以參考下
    2018-07-07
  • 使用Eclipse如何開發(fā)python腳本

    使用Eclipse如何開發(fā)python腳本

    這篇文章主要為大家詳細(xì)介紹了使用Eclipse開發(fā)python腳本的相關(guān)方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • tensorflow之獲取tensor的shape作為max_pool的ksize實(shí)例

    tensorflow之獲取tensor的shape作為max_pool的ksize實(shí)例

    今天小編就為大家分享一篇tensorflow之獲取tensor的shape作為max_pool的ksize實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • keras 自定義loss model.add_loss的使用詳解

    keras 自定義loss model.add_loss的使用詳解

    這篇文章主要介紹了keras 自定義loss model.add_loss的使用詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • 用python寫個(gè)顏值評(píng)分器篩選最美主播

    用python寫個(gè)顏值評(píng)分器篩選最美主播

    這篇文章主要介紹了我如何用python寫顏值評(píng)分器,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 對(duì)Python 檢查文件名是否規(guī)范的實(shí)例詳解

    對(duì)Python 檢查文件名是否規(guī)范的實(shí)例詳解

    今天小編就為大家分享一篇對(duì)Python 檢查文件名是否規(guī)范的實(shí)例詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • python中實(shí)現(xiàn)詞云圖的示例

    python中實(shí)現(xiàn)詞云圖的示例

    這篇文章主要介紹了python中實(shí)現(xiàn)詞云圖的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12

最新評(píng)論