Python中Json使用示例詳解

    目錄

    Python Json使用

    本篇主要介紹一下 python 中 json得使用 如何把 dict轉成json 、object 轉成json 、以及json轉成對象 等等。。

    json是非常常用得一種數據格式,比如在前后端分離得 web開發中,返回給前端 通常都會使用json ,那么來看看 python 中如何玩轉json

    1.dict 轉成 json (json.dumps(dict))

    注意: ensure_ascii=False 否則中文亂碼

    import json student = {     'name': 'johnny',     'age': 27,     'address': '無錫' } print(json.dumps(student, ensure_ascii=False))# {"name": "johnny", "age": 27, "address": "無錫"}  json

    2.json 轉 dict (json.loads(jsonstr))

    import jsonjson_student = '{"name": "johnny", "age": 27, "address": "無錫"}'print(json.loads(json_student))# {'name': 'johnny', 'age': 27, 'address': '無錫'} 字典dict

    3. 類對象轉 json (dict屬性/提供default=方法)

    3.1 錯誤使用

    注意:json.dumps() 不支持 直接把 類對象放進去!!! 會報錯 Student is not JSON serializable

    import jsonclass Student:    def __init__(self, name, age):        self.name = name        self.age = agestudent = Student('candy', '30')#錯誤使用!!!print(json.dumps(student))  報錯!!! TypeError: Object of type Student is not JSON serializable

    3.2 使用類對象 dict 屬性

    #正確使用!!!print(json.dumps(student.__dict__))) #可以使用 類對象得 __dict__ 屬性#{"name": "candy", "age": "30"}

    3.3 提供一個 convert2json 方法

    default=指定方法

    class Student:    def __init__(self, name, age):        self.name = name        self.age = age    @staticmethod    def conver2json(self):        return {            'name': self.name,            'age': self.age        }#通過自己寫一個 conver2json方法 去手動轉化一下 把 類對象轉成json print(json.dumps(student,default=Student.conver2json))

    4.json 轉 類對象 (json.loads(jsonstr,object_hook=..))

    注意:json.loads 默認只會轉成dict,需要自己提供方法 把dict 轉成 類對象

    import jsonclass Student:    def __init__(self, name, age):        self.name = name        self.age = age    @staticmethod    def conver2json(self):        return {            'name': self.name,            'age': self.age        }    @staticmethod    def convert2object(dict):        return Student(dict['name'],dict['age'])json_student = '{"name": "johnny", "age": 27, "address": "無錫"}'print(json.loads(json_student,object_hook=Student.convert2object))#<__main__.Student

    5. dict/對象 轉為 json文件 (json.dump(student,f))

    注意 dump 還是 只能接收 dict ,如果要把 對象寫到json中 需要先把對象 轉成 dict ,可以通過 ——dict——屬性

    student = {    'name': 'johnny',    'age': 27,    'address': '無錫'}with open('student.json','w') as f:    json.dump(student,f,ensure_ascii=False)

    6. json文件轉 dict /對象 (json.load)

    with open('student.json','r')  as f:    print(json.load(f))

    小疑問

    為什么:轉成json 后 name 是一個數組呢? 因為 self.name = name, 后面有一個 逗號,。。。 會把這個name當成元組 ,元組轉成 json 就是 數組!!!

    class Student:    def __init__(self, name, age):        self.name = name,  #這里!!!不能有 逗號。。         self.age = agestudent = Student('candy', '30')print(json.dumps(student.__dict__))#猜猜它得打印是什么 #{"name": ["candy"], "age": "30"}   

    總結

    • json.dumps() 只支持 dict轉json 如果是 class 對象 需要 通過 dict屬性或者提供default= conver2json 方法
    • json.dump() 是寫入 文件中
    • json.loads() 只支持把 json str轉成 dict ,如果要轉成 class 對象 則需要提供 object_hook=convert2object方法
    • json.load()/ 是從文件中讀取 jsonstr 到 dict

    很簡單 注意一下 class 和 json 得相互轉化即可

    參考:https://www.jb51.net/article/256548.htm

    到此這篇關于Python中Json使用詳解得內容就介紹到這了,更多相關Python Json使用內容請搜索之家以前得內容或繼續瀏覽下面得相關內容希望大家以后多多支持之家!

    聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
    發表評論
    更多 網友評論1 條評論)
    暫無評論

    返回頂部

    主站蜘蛛池模板: 中文字幕色AV一区二区三区| 秋霞日韩一区二区三区在线观看| 国产精品日本一区二区不卡视频 | 亚洲熟妇AV一区二区三区浪潮| 久久精品一区二区三区四区 | 色一情一乱一伦一区二区三欧美| 97av麻豆蜜桃一区二区| 国产精品一级香蕉一区| 日本一区二区三区免费高清在线| 亚洲熟女少妇一区二区| 影院成人区精品一区二区婷婷丽春院影视 | 一区二区三区在线|日本| 3D动漫精品啪啪一区二区下载| 国产精品无码不卡一区二区三区| 91久久精品国产免费一区| 亚洲一区无码中文字幕| 成人在线视频一区| 亚洲AV无码一区二三区| 精品女同一区二区| 色多多免费视频观看区一区| 国模私拍福利一区二区| 国产大秀视频在线一区二区| 亚洲国产精品一区二区第一页| 国产亚洲自拍一区| 亚洲性日韩精品一区二区三区| 一区二区三区伦理高清| av在线亚洲欧洲日产一区二区| 亚洲av成人一区二区三区在线观看| 精品国产日韩亚洲一区在线| 国产免费私拍一区二区三区| 无码精品人妻一区二区三区AV| 一区二区三区四区电影视频在线观看 | 无码AV中文一区二区三区| 亚洲一区在线视频观看| 九九无码人妻一区二区三区| 亚洲av成人一区二区三区在线观看| 成人精品视频一区二区三区| 久久亚洲日韩精品一区二区三区| 91无码人妻精品一区二区三区L| 国产精品一区二区无线| 搡老熟女老女人一区二区|