国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

python 常用內(nèi)置模塊之 json

這篇具有很好參考價值的文章主要介紹了python 常用內(nèi)置模塊之 json。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

介紹

當(dāng)處理 JSON 數(shù)據(jù)時,Python 中的 json 模塊提供了四個主要的函數(shù):dump、dumps、load 和 loads。這些函數(shù)提供了在 JSON 數(shù)據(jù)和 Python 對象之間進(jìn)行轉(zhuǎn)換和序列化的功能。

JSON(JavaScript Object Notation)是一種輕量級的數(shù)據(jù)交換格式,廣泛用于將數(shù)據(jù)從一個應(yīng)用程序傳輸?shù)搅硪粋€應(yīng)用程序。它基于 JavaScript 語言的一個子集,但已成為跨編程語言和平臺的通用數(shù)據(jù)格式。

JSON 數(shù)據(jù)由鍵值對組成,類似于 Python 中的字典或 JavaScript 中的對象。它支持以下數(shù)據(jù)類型:

  • 字符串(String):表示文本數(shù)據(jù),使用雙引號括起來。
  • 數(shù)字(Number):表示整數(shù)或浮點(diǎn)數(shù)。
  • 布爾值(Boolean):表示真或假。
  • 數(shù)組(Array):表示有序的值列表,使用方括號括起來,值之間用逗號分隔。
  • 對象(Object):表示鍵值對集合,使用花括號括起來,鍵和值之間用冒號分隔,鍵值對之間用逗號分隔。

常用 API

  • **loads() **:將 JSON 字符串解析為 Python 對象。

    注意:

    • 在使用 loads 的時候 json 中的字符串必須要用雙引號,否則會報(bào)錯(json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 3 column 5 (char 12))
    • 入?yún)⒉荒転?None,否則報(bào)錯
  • dumps() : 將 Python 對象轉(zhuǎn)換為為 JSON 字符串

    參數(shù):

    • obj(必需):要編碼為 JSON 格式的 Python 數(shù)據(jù)結(jié)構(gòu)。這可以是字典、列表、整數(shù)、字符串等等。

    • ensure_ascii(可選):默認(rèn)為 True。

      • 如果將其設(shè)置為 True,則會確保生成的 JSON 字符串中的所有非 ASCII 字符都會被轉(zhuǎn)義為 Unicode 轉(zhuǎn)義序列(例如 \uXXXX),以便在輸出時保持 ASCII 字符集。
      • 如果將其設(shè)置為 False,則非 ASCII 字符將以原始形式保留在輸出中。
    • indent(可選):用于指定生成的 JSON 字符串的縮進(jìn)級別。如果設(shè)置為一個整數(shù),將在生成的 JSON 字符串中包含縮進(jìn),使其更易于閱讀。

    • skipkeys(可選):默認(rèn)為 False。如果將其設(shè)置為 True,則會跳過那些字典鍵不是基本數(shù)據(jù)類型(str, int, float, bool, NoneType)的項(xiàng)。如果字典中包含非基本數(shù)據(jù)類型的鍵,將會引發(fā) TypeError。

    • check_circular(可選):默認(rèn)為 True。

      • 如果將其設(shè)置為 True,則會檢查循環(huán)引用并引發(fā) ValueError。
      • 如果將其設(shè)置為 False,則不會檢查循環(huán)引用。
    • allow_nan(可選):默認(rèn)為 True。

      • 如果將其設(shè)置為 True,則允許編碼浮點(diǎn)數(shù)值為特殊值(如 NaN 和 Infinity),這符合 JSON 規(guī)范。
      • 如果將其設(shè)置為 False,則將 NaN 和 Infinity 視為無效輸入,并引發(fā) ValueError。
    • cls(可選):用于指定自定義 JSON 編碼器的類。默認(rèn)為 None,表示使用標(biāo)準(zhǔn)的 JSON 編碼器。

    • separators(可選):用于指定生成的 JSON 字符串中的分隔符。

      默認(rèn)為 (", "": "),表示鍵值對之間使用逗號和冒號分隔??梢愿鶕?jù)需要自定義分隔符。

    import json
    
    str = '''
        [{
        "name":"AnJing",
        "age":"26"
    }]
    '''
    data = json.loads(str)
    print(data)				# 輸出:[{'name': 'AnJing', 'age': '26'}]
    print(type(data))		# 輸出:<class 'list'>
    print(data[0].get('name'))		# 輸出:AnJing
    print(data[0]['name'])  		# 通過下標(biāo)進(jìn)行選擇
    
    str_data = json.dumps(data)
    print(type(data))			# 輸出:<class 'str'>
    print(data)					# 輸出:[{"name": "AnJing", "age": "26"}]
    
  • load() :從 JSON 文件中讀取數(shù)據(jù),并將其解析為 Python 對象。

    它接受一個參數(shù):要讀取的文件對象。

  • dump() :將 Python 對象轉(zhuǎn)換為 JSON 數(shù)據(jù),并將其寫入文件對象中

    它接受兩個參數(shù):要序列化的對象和目標(biāo)文件對象

    注意:在使用 dump 和 load 函數(shù)時,需要提供文件對象并確保文件以適當(dāng)?shù)哪J酱蜷_(如 ‘w’ 用于寫入,‘r’ 用于讀?。?/strong>

    import json
    
    str = [{
        "name":"AnJing",
        "age":"26"
    }]
    # 通過dump寫入到文件中
    json.dump(str, open('123.json','w'))
    # 通過load查看是否寫入
    data = json.load(open('123.json','r'))
    print(data)			# 輸出:[{'name': 'AnJing', 'age': '26'}]
    

常見報(bào)錯

  • 解析無效的 JSON 字符串

    如果提供的 JSON 數(shù)據(jù)無效,解析過程將引發(fā) JSONDecodeError 異常。

    例如:

    • 缺少引號

      invalid_json = '{"name": "ZhangSan", age: 30, "city": "ShenZhen"}'
      data = json.loads(invalid_json) 
      # 引發(fā)JSONDecodeError異常。原因?yàn)镴SON字符串中的age缺少雙引號,導(dǎo)致解析失敗
      
    • 不符合 JSON 語法規(guī)則(JSON 數(shù)據(jù)內(nèi)字符串必須使用雙引號)

  • 解析無效屬性的字符串

    如果方法入?yún)?None 或空字符串燈,解析過程將引發(fā) AttributeError 錯誤

  • 訪問不存在的鍵

    如果嘗試訪問 JSON 數(shù)據(jù)中不存在的鍵,將引發(fā) KeyError 異常。

    print(data['address'])  # 引發(fā)KeyError異常。原因?yàn)镴SON數(shù)據(jù)中沒有address鍵,訪問該鍵將引發(fā)異常
    

獲取對象去除為 null 的字段的 json 字符串

  • 要將一個包含基本模型的對象轉(zhuǎn)換為 JSON 并去除其中的 null 字段,可以使用 Python 中的 json 模塊和一個遞歸函數(shù)來完成這個任務(wù)。

  • 示例代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-752041.html

    import json
    
    def remove_null(obj):
        if isinstance(obj, dict):
            return {key: remove_null(value) for key, value in obj.items() if value is not None}
        elif isinstance(obj, list):
            return [remove_null(item) for item in obj if item is not None]
        else:
            return obj
    
    # 示例對象,包含了一些 None 值
    data = {
        "name": "John",
        "age": None,
        "address": {
            "street": "123 Main St",
            "city": None,
            "zip_code": "98765"
        },
        "hobbies": ["reading", None, "swimming"]
    }
    # 使用 remove_null 函數(shù)去除 None 值
    data_without_null: dict = remove_null(data)
    # 將處理后的對象轉(zhuǎn)換為 JSON 格式
    json_data = json.dumps(data_without_null)
    
    # 注意:繼承自pydantic的BaseModel類的類,若有字段的類型也是BaseModel,需先轉(zhuǎn)json再轉(zhuǎn)dict,再傳入函數(shù)
    json_data = json.dumps(remove_null(json.loads(base_model.josn())))
    

到了這里,關(guān)于python 常用內(nèi)置模塊之 json的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 使用Python內(nèi)置模塊加速SQL查詢

    大家好,假設(shè)你正在查閱一本書的頁面,你想要更快地找到你正在尋找的信息。那么你可能會查找術(shù)語索引,然后跳轉(zhuǎn)到引用特定術(shù)語的頁面,SQL中的索引與書籍中的索引工作原理類似。 在大多數(shù)實(shí)際系統(tǒng)中,都將對包含大量行的數(shù)據(jù)庫表運(yùn)行查詢(想象一下數(shù)百萬行),需

    2024年02月11日
    瀏覽(97)
  • Python常用內(nèi)置函數(shù)

    Python實(shí)用教程_spiritx的博客-CSDN博客 Python 提供豐富了內(nèi)置函數(shù),這些函數(shù)的使用頻率非常用,在編程過程中熟練使用內(nèi)置函數(shù)可以大大減少我們的代碼邏輯和代碼量。 Python 解釋器內(nèi)置了很多函數(shù)和類型,任何時候都能使用。這些內(nèi)置函數(shù)直接使用,是不需要導(dǎo)入庫的。 - 函

    2024年02月10日
    瀏覽(24)
  • python-常用的內(nèi)置函數(shù)

    python-常用的內(nèi)置函數(shù)

    從實(shí)現(xiàn)函數(shù)的角度來看,其至少需要想清楚以下 3 點(diǎn): 1.函數(shù)需要幾個關(guān)鍵的需要動態(tài)變化的數(shù)據(jù),這些數(shù)據(jù)應(yīng)該被定義成函數(shù)的 參數(shù) 。 2.函數(shù)需要傳出幾個重要的數(shù)據(jù)(就是調(diào)用該函數(shù)的人希望得到的數(shù)據(jù)),這些數(shù)據(jù)應(yīng)該被定義成 返回值 。 3. 函數(shù)的內(nèi)部實(shí)現(xiàn)過程 。

    2024年02月08日
    瀏覽(25)
  • 【Python數(shù)據(jù)分析】Python常用內(nèi)置函數(shù)(二)

    【Python數(shù)據(jù)分析】Python常用內(nèi)置函數(shù)(二)

    ??歡迎來到Python專欄~Python常用內(nèi)置函數(shù)(二) ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏與酒 ?? ? 博客主頁: 小夏與酒的博客 ??該系列 文章專欄: Python學(xué)習(xí)專欄 文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯誤,希望大家能指正?? ?? 歡迎大家關(guān)注! ?? Python技能樹:Python入門技

    2024年02月14日
    瀏覽(15)
  • 【Python數(shù)據(jù)分析】Python常用內(nèi)置函數(shù)(一)

    【Python數(shù)據(jù)分析】Python常用內(nèi)置函數(shù)(一)

    ??歡迎來到Python專欄~Python常用內(nèi)置函數(shù)(一) ☆* o(≧▽≦)o *☆ 嗨 ~我是 小夏與酒 ?? ? 博客主頁: 小夏與酒的博客 ??該系列 文章專欄: Python學(xué)習(xí)專欄 文章作者技術(shù)和水平有限,如果文中出現(xiàn)錯誤,希望大家能指正?? ?? 歡迎大家關(guān)注! ?? Python技能樹:Python入門技

    2024年02月15日
    瀏覽(19)
  • 【Python數(shù)據(jù)分析】常用內(nèi)置函數(shù)(一)

    【Python數(shù)據(jù)分析】常用內(nèi)置函數(shù)(一)

    ??? 哈嘍大家好,本次是python數(shù)據(jù)分析、挖掘與可視化專欄第四期 ?本期內(nèi)容:常用內(nèi)置函數(shù) ??系列專欄:Python數(shù)據(jù)分析、挖掘與可視化 ??“總有一段時光悄悄過去然后永遠(yuǎn)懷念.” 本期內(nèi)容為python的常用內(nèi)置函數(shù)~ 參考書籍:《Python數(shù)據(jù)分析、挖掘與可視化》 在python中

    2024年02月04日
    瀏覽(88)
  • 【Python 零基礎(chǔ)入門】常用內(nèi)置函數(shù) 再探

    【Python 零基礎(chǔ)入門】常用內(nèi)置函數(shù) 再探

    Python 是一種解釋性, 高級和通用的變成語言. Python 由 Guido van Rossum 創(chuàng)建并 1991 年首次發(fā)布. Python 的設(shè)計(jì)強(qiáng)調(diào)代碼的可讀性, 其雨大允許我們使用相較于 C++ 或 Java 更少的代碼表達(dá)概念. Python 使得變成變得更簡單, 更快捷. 下面就跟著小白我來一起看一下 Python 常用的內(nèi)置函數(shù).

    2024年02月04日
    瀏覽(25)
  • 【Python 零基礎(chǔ)入門】常用內(nèi)置函數(shù) 初探

    【Python 零基礎(chǔ)入門】常用內(nèi)置函數(shù) 初探

    Python 是一種解釋性, 高級和通用的變成語言. Python 由 Guido van Rossum 創(chuàng)建并 1991 年首次發(fā)布. Python 的設(shè)計(jì)強(qiáng)調(diào)代碼的可讀性, 其雨大允許我們使用相較于 C++ 或 Java 更少的代碼表達(dá)概念. Python 使得變成變得更簡單, 更快捷. 下面就跟著小白我來一起看一下 Python 常用的內(nèi)置函數(shù).

    2024年02月05日
    瀏覽(19)
  • 【0基礎(chǔ)入門Python筆記】三、python 之函數(shù)以及常用內(nèi)置函數(shù)

    【0基礎(chǔ)入門Python筆記】三、python 之函數(shù)以及常用內(nèi)置函數(shù)

    函數(shù)是一種用于封裝可重復(fù)使用代碼塊的工具,能夠?qū)⒁幌盗胁僮鹘M織成一個邏輯單元。 函數(shù)定義 在Python中,函數(shù)通過def進(jìn)行定義,后面跟著函數(shù)的名稱、參數(shù)列表和冒號。函數(shù)的主體代碼塊縮進(jìn),并在需要時使用return返回值。 在上面的示例中,我們定義了一

    2024年02月12日
    瀏覽(30)
  • Python 常用內(nèi)置函數(shù)詳解(二):print()函數(shù)----打印輸出

    Python 常用內(nèi)置函數(shù)詳解(二):print()函數(shù)----打印輸出

    print() 函數(shù)是 Python 編程最常見的函數(shù),常用于輸出程序結(jié)果,默認(rèn)輸出到屏幕,也可以輸出到指定文件中。 語法格式: 參數(shù)說明: value:表示要輸出的值,可以是數(shù)字、字符串、各種類型的變量等。 … :值列表,表示可以一次性打印多個值,輸出多個值時,需要使用 \\\",\\\"

    2024年04月28日
    瀏覽(29)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包